Adjusted to show side effects and their handling
When dealing with static buffers, successive calls point
to the same memory location and overwrite formers ones...
committer: Markus Bröker <mbroeker@largo.homelinux.org>
/**
* crypt.c
* Copyright (C) 2008 Markus Broeker
*/
#define _XOPEN_SOURCE 500
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define GETRANDOM(max) ('a'+(int)((float)(max)*rand()/RAND_MAX+1.0))
int main (int argc, char **argv)
{
char salt[12] = { 0 };
if (argc != 2) {
printf ("Usage: %s <plaintext>\n", argv[0]);
return EXIT_FAILURE;
}
srand (time (NULL));
sprintf (salt, "$1$%c%c%c%c%c%c%c%c",
GETRANDOM (26), GETRANDOM (26),
GETRANDOM (26), GETRANDOM (26), GETRANDOM (26), GETRANDOM (26), GETRANDOM (26), GETRANDOM (26));
printf ("%s\n", crypt (argv[1], salt));
return EXIT_SUCCESS;
}