--- ckuus3.c +++ ckuus3.c @@ -10283,20 +10283,22 @@ int i,len; if ((y = cmtxt("Prompt string","",&s,xxstring)) < 0) return(y); - if (s == "") s = NULL; + if (s && !strlen(s)) s = NULL; if (s) { s = brstrip(s); - if (s == "") s = NULL; + if (s && !strlen(s)) s = NULL; } /* we must check to make sure there are no % fields */ - len = strlen(s); - for (i = 0; i < len; i++) { - if (s[i] == '%') { - if (s[i+1] != '%') { - printf("%% fields are not used in this command.\n"); - return(-9); + if (s) { + len = strlen(s); + for (i = 0; i < len; i++) { + if (s[i] == '%') { + if (s[i+1] != '%') { + printf("%% fields are not used in this command.\n"); + return(-9); + } + i++; } - i++; } } makestr(&tn_pr_uid,s); @@ -12400,33 +12402,35 @@ krb4_autodel = z; break; case XYKRBPRM: /* Prompt */ - if (s == "") s = NULL; + if (s && !strlen(s)) s = NULL; if (s) { s = brstrip(s); - if (s == "") s = NULL; + if (s && !strlen(s)) s = NULL; } switch (z) { case KRB_PW_PRM: { /* Password */ /* Check that there are no more than */ /* two % fields and % must followed by 's'. */ int i,n,len; - len = strlen(s); - for (i = 0, n = 0; i < len; i++) { - if (s[i] == '%') { - if (s[i+1] != '%') { - if (s[i+1] != 's') { - printf( - "Only %%s fields are permitted.\n" - ); - return(-9); - } - if (++n > 2) { - printf( - "Only two %%s fields are permitted.\n"); - return(-9); + if (s) { + len = strlen(s); + for (i = 0, n = 0; i < len; i++) { + if (s[i] == '%') { + if (s[i+1] != '%') { + if (s[i+1] != 's') { + printf( + "Only %%s fields are permitted.\n" + ); + return(-9); + } + if (++n > 2) { + printf( + "Only two %%s fields are permitted.\n"); + return(-9); + } } + i++; } - i++; } } if (kv == 5) @@ -12438,15 +12442,17 @@ case KRB_PR_PRM: { /* Principal */ /* Check to make sure there are no % fields */ int i,len; - len = strlen(s); - for (i = 0; i < len; i++) { - if (s[i] == '%') { - if (s[i+1] != '%') { - printf( - "%% fields are not used in this command.\n"); - return(-9); + if (s) { + len = strlen(s); + for (i = 0; i < len; i++) { + if (s[i] == '%') { + if (s[i+1] != '%') { + printf( + "%% fields are not used in this command.\n"); + return(-9); + } + i++; } - i++; } } if (kv == 5) @@ -12487,32 +12493,34 @@ return(y); switch (x) { /* Copy value to right place */ case XYSRPPRM: /* Prompt */ - if (s == "") s = NULL; + if (s && !strlen(s)) s = NULL; if (s) { s = brstrip(s); - if (s == "") s = NULL; + if (s && !strlen(s)) s = NULL; } switch (z) { case SRP_PW_PRM: { /* Password */ /* Check %s fields */ int i,n,len; - len = strlen(s); - for (i = 0, n = 0; i < len; i++) { - if (s[i] == '%') { - if (s[i+1] != '%') { - if (s[i+1] != 's') { - printf( - "Only %%s fields are permitted.\n"); - return(-9); - } - if (++n > 1) { - printf( - "Only one %%s field is permitted.\n"); - return(-9); - } + if (s) { + len = strlen(s); + for (i = 0, n = 0; i < len; i++) { + if (s[i] == '%') { + if (s[i+1] != '%') { + if (s[i+1] != 's') { + printf( + "Only %%s fields are permitted.\n"); + return(-9); + } + if (++n > 1) { + printf( + "Only one %%s field is permitted.\n"); + return(-9); + } + } + i++; } - i++; - } + } } makestr(&srppwprompt,s); break;