[stgt] [PATCH] fix tid testing
Doron Shoham
dorons at Voltaire.COM
Wed Oct 22 10:08:20 CEST 2008
return error if tid is not a postive integer
Signed-off-by: Doron Shoham <dorons at voltaire.com>
---
usr/tgtadm.c | 26 ++++++++++++++++++++------
1 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/usr/tgtadm.c b/usr/tgtadm.c
index 23dbc53..1102312 100644
--- a/usr/tgtadm.c
+++ b/usr/tgtadm.c
@@ -385,6 +385,7 @@ int main(int argc, char **argv)
char *bstype;
char *user, *password;
char *buf;
+ char *endptr;
struct tgtadm_req *req;
op = tid = mode = -1;
@@ -416,9 +417,22 @@ int main(int argc, char **argv)
mode = str_to_mode(optarg);
break;
case 't':
- tid = strtol(optarg, NULL, 10);
- if (errno == EINVAL) {
+ tid = strtol(optarg, &endptr, 10);
+ if ((errno == ERANGE) || (errno != 0 && tid == 0)) {
eprintf("invalid tid '%s'\n", optarg);
+ eprintf("'tid' must be a positive integer\n");
+ exit(EINVAL);
+ }
+
+ if (endptr == optarg) {
+ eprintf("invalid tid '%s'\n", optarg);
+ eprintf("'tid' must be a positive integer\n");
+ exit(EINVAL);
+ }
+
+ if (tid < 0) {
+ eprintf("invalid tid '%s'\n", optarg);
+ eprintf("'tid' must be a positive integer\n");
exit(EINVAL);
}
break;
@@ -507,7 +521,7 @@ int main(int argc, char **argv)
}
if (mode == MODE_TARGET) {
- if ((tid <= 0 && (op != OP_SHOW))) {
+ if ((tid < 0 && (op != OP_SHOW))) {
eprintf("'tid' option is necessary\n");
exit(EINVAL);
}
@@ -608,7 +622,7 @@ int main(int argc, char **argv)
eprintf("'user' option is necessary\n");
exit(EINVAL);
}
- if (tid <= 0) {
+ if (tid < 0) {
eprintf("'tid' option is necessary\n");
exit(EINVAL);
}
@@ -624,7 +638,7 @@ int main(int argc, char **argv)
eprintf("'user' option is necessary\n");
exit(EINVAL);
}
- if (tid <= 0) {
+ if (tid < 0) {
eprintf("'tid' option is necessary\n");
exit(EINVAL);
}
@@ -637,7 +651,7 @@ int main(int argc, char **argv)
}
if (mode == MODE_DEVICE) {
- if (tid <= 0) {
+ if (tid < 0) {
eprintf("'tid' option is necessary\n");
exit(EINVAL);
}
--
1.5.3.8
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list