summaryrefslogtreecommitdiff
path: root/usr/src/cmd
diff options
context:
space:
mode:
authorbing zhao - Sun Microsystems - Beijing China <Bing.Zhao@Sun.COM>2010-06-04 10:39:19 +0800
committerbing zhao - Sun Microsystems - Beijing China <Bing.Zhao@Sun.COM>2010-06-04 10:39:19 +0800
commit2e0fe3efe5f9d579d4e44b3532d8e342c68b40ca (patch)
tree3eba42b4e3ce13d3241dfc728c2c21b12d71913e /usr/src/cmd
parent27954b0d964ffcb749cf19296906e7fecdf3da1b (diff)
downloadillumos-joyent-2e0fe3efe5f9d579d4e44b3532d8e342c68b40ca.tar.gz
6953064 iscsiadm modify discovery -t enable panics system with "kernel heap corruption detected"
Diffstat (limited to 'usr/src/cmd')
-rw-r--r--usr/src/cmd/iscsiadm/iscsiadm_main.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/usr/src/cmd/iscsiadm/iscsiadm_main.c b/usr/src/cmd/iscsiadm/iscsiadm_main.c
index 221aa69e27..7a4d1ad54b 100644
--- a/usr/src/cmd/iscsiadm/iscsiadm_main.c
+++ b/usr/src/cmd/iscsiadm/iscsiadm_main.c
@@ -3107,6 +3107,7 @@ modifyNodeAuthParam(IMA_OID oid, int param, char *chapName, int *funcRet)
IMA_STATUS status;
int ret;
int secretLen = MAX_CHAP_SECRET_LEN;
+ int nameLen = 0;
IMA_BYTE chapSecret[MAX_CHAP_SECRET_LEN + 1];
@@ -3126,15 +3127,20 @@ modifyNodeAuthParam(IMA_OID oid, int param, char *chapName, int *funcRet)
(void) fprintf(stderr, "CHAP name cannot be NULL.\n");
return (1);
}
- if (strlen(chapName) == 0) {
+ nameLen = strlen(chapName);
+ if (nameLen == 0) {
(void) fprintf(stderr, "CHAP name cannot be empty.\n");
return (1);
}
+ if (nameLen > ISCSI_MAX_C_USER_LEN) {
+ (void) fprintf(stderr, "CHAP name is too long.\n");
+ return (1);
+ }
(void) memset(&authParams.chapParms.name, 0,
sizeof (authParams.chapParms.name));
(void) memcpy(&authParams.chapParms.name,
- &chapName[0], strlen(chapName));
- authParams.chapParms.nameLength = strlen(chapName);
+ &chapName[0], nameLen);
+ authParams.chapParms.nameLength = nameLen;
break;
case AUTH_PASSWORD :
@@ -3176,6 +3182,7 @@ modifyTargetAuthParam(IMA_OID oid, int param, char *chapName, int *funcRet)
IMA_STATUS status;
int ret;
int secretLen = MAX_CHAP_SECRET_LEN;
+ int nameLen = 0;
IMA_BYTE chapSecret[MAX_CHAP_SECRET_LEN + 1];
@@ -3195,15 +3202,20 @@ modifyTargetAuthParam(IMA_OID oid, int param, char *chapName, int *funcRet)
(void) fprintf(stderr, "CHAP name cannot be NULL.\n");
return (1);
}
- if (strlen(chapName) == 0) {
+ nameLen = strlen(chapName);
+ if (nameLen == 0) {
(void) fprintf(stderr, "CHAP name cannot be empty.\n");
return (1);
}
+ if (nameLen > ISCSI_MAX_C_USER_LEN) {
+ (void) fprintf(stderr, "CHAP name is too long.\n");
+ return (1);
+ }
(void) memset(&authParams.chapParms.name, 0,
sizeof (authParams.chapParms.name));
(void) memcpy(&authParams.chapParms.name,
- &chapName[0], strlen(chapName));
- authParams.chapParms.nameLength = strlen(chapName);
+ &chapName[0], nameLen);
+ authParams.chapParms.nameLength = nameLen;
break;
case AUTH_PASSWORD :