pike.git/
src/
builtin_functions.c
Branch:
Tag:
Non-build tags
All tags
No tags
2016-03-12
2016-03-12 19:03:37 by Martin Nilsson <nilsson@fastmail.com>
a91323bd2efcf475d3cd00938cbb56043739c433 (
21
lines) (+
17
/-
4
)
[
Show
|
Annotate
]
Branch:
8.1
Take crypt salt from random().
3148:
{ char salt[2]; char *ret, *pwd, *saltp = NULL;
-
char *
choise
=
-
"
cbhisjKlm4k65p7qrJfLMNQOPxwzyAaBDFgnoWXYCZ0123tvdHueEGISRTUV89
./";
+
char *
alphabet
=
+
"./
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
";
get_all_args("crypt", args, "%s.%s", &pwd, &saltp);
3162:
return; } } else {
-
salt[0]
=
choise[my
_
rand
(strlen(
choise
))];
-
salt[
1
] =
choise
[
my
_
rand
(
strlen(choise
)
)
];
+
struct
svalue *random
=
+
simple
_
mapping_string_lookup
(
get_builtin_constants(), "random");
+
if(!random || (TYPEOF(*random) != T_FUNCTION))
+
Pike_error("Unable to resolve random function.\n");
+
push_svalue(random);
+
push_int(4096); /*
strlen(
alphbet
)
**2 */
+
apply_svalue(&Pike_sp[-2], 1
)
;
+
if(TYPEOF(Pike_sp[-1
]
)!=T_INT)
+
Pike_error("Couldn't generate random number.\n")
;
+
+
salt[
0] = alphabet[ Pike_sp[-
1]
.u.integer
& 0x3f ];
+
salt[1]
=
alphabet
[
(Pike
_
sp[-1].u.integer>>6
)
& 0x3f
];
+
pop_n_elems(2);
+
saltp=salt; if (args > 1) { pop_n_elems(args-1);