diff options
| author | bing zhao - Sun Microsystems - Beijing China <Bing.Zhao@Sun.COM> | 2010-06-04 10:39:19 +0800 |
|---|---|---|
| committer | bing zhao - Sun Microsystems - Beijing China <Bing.Zhao@Sun.COM> | 2010-06-04 10:39:19 +0800 |
| commit | 2e0fe3efe5f9d579d4e44b3532d8e342c68b40ca (patch) | |
| tree | 3eba42b4e3ce13d3241dfc728c2c21b12d71913e /usr/src/cmd | |
| parent | 27954b0d964ffcb749cf19296906e7fecdf3da1b (diff) | |
| download | illumos-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.c | 24 |
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 : |
