diff --git a/src/builtin_efuns.c b/src/builtin_efuns.c index 54bd074c070e4c9b870904a3adf200f263e6acc1..1a94033b2e9761b363761cb7164fbf3d62583145 100644 --- a/src/builtin_efuns.c +++ b/src/builtin_efuns.c @@ -701,7 +701,7 @@ void f_time(INT32 args) void f_crypt(INT32 args) { char salt[2]; - char *ret; + char *ret, *saltp; char *choise = "cbhisjKlm4k65p7qrJfLMNQOPxwzyAaBDFgnoWXYCZ0123tvdHueEGISRTUV89./"; @@ -718,17 +718,17 @@ void f_crypt(INT32 args) sp[1-args].u.string->len < 2) error("Bad argument 2 to crypt()\n"); - salt[0] = sp[1-args].u.string->str[0]; - salt[1] = sp[1-args].u.string->str[1]; + saltp=sp[1-args].u.string->str; } else { salt[0] = choise[my_rand()%strlen(choise)]; salt[1] = choise[my_rand()%strlen(choise)]; + saltp=salt; } #ifdef HAVE_CRYPT - ret = (char *)crypt(sp[-args].u.string->str, salt); + ret = (char *)crypt(sp[-args].u.string->str, saltp); #else #ifdef HAVE__CRYPT - ret = (char *)_crypt(sp[-args].u.string->str, salt); + ret = (char *)_crypt(sp[-args].u.string->str, saltp); #else ret = sp[-args].u.string->str; #endif