Merge branch 'master' of git://github.com/ALSchwalm/fiche into ALSchwalm-master
This commit is contained in:
24
fiche.c
24
fiche.c
@@ -29,12 +29,11 @@ $ cat fiche.c | nc localhost 9999
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include "fiche.h"
|
#include "fiche.h"
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
time_seed = time(0);
|
|
||||||
|
|
||||||
parse_parameters(argc, argv);
|
parse_parameters(argc, argv);
|
||||||
|
|
||||||
if (getuid() == 0)
|
if (getuid() == 0)
|
||||||
@@ -294,28 +293,37 @@ void generate_url(char *buffer, char *slug, size_t slug_length, struct client_da
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
memset(slug, '\0', slug_length);
|
memset(slug, '\0', slug_length);
|
||||||
|
#if !defined(BSD)
|
||||||
|
FILE* frandom = fopen("/dev/urandom", "r");
|
||||||
|
#endif
|
||||||
|
int symbol_id;
|
||||||
|
|
||||||
for (i = 0; i <= SLUG_SIZE - 1; i++)
|
for (i = 0; i <= SLUG_SIZE - 1; i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if defined(BSD)
|
#if defined(BSD)
|
||||||
int symbol_id = arc4random() % strlen(symbols);
|
symbol_id = arc4random();
|
||||||
#else
|
#else
|
||||||
int symbol_id = rand_r(&time_seed) % strlen(symbols);
|
fread(&symbol_id, sizeof(symbol_id), 1, frandom);
|
||||||
#endif
|
#endif
|
||||||
slug[i] = symbols[symbol_id];
|
slug[i] = symbols[symbol_id % strlen(symbols)];
|
||||||
}
|
}
|
||||||
|
|
||||||
while (create_directory(slug) == -1)
|
while (create_directory(slug) == -1)
|
||||||
{
|
{
|
||||||
#if defined(BSD)
|
#if defined(BSD)
|
||||||
int symbol_id = arc4random() % strlen(symbols);
|
symbol_id = arc4random();
|
||||||
#else
|
#else
|
||||||
int symbol_id = rand_r(&time_seed) % strlen(symbols);
|
fread(&symbol_id, sizeof(symbol_id), 1, frandom);
|
||||||
#endif
|
#endif
|
||||||
slug[strlen(slug)] = symbols[symbol_id];
|
slug[strlen(slug)] = symbols[symbol_id % strlen(symbols)];
|
||||||
}
|
}
|
||||||
|
|
||||||
save_to_file(slug, buffer, data);
|
save_to_file(slug, buffer, data);
|
||||||
|
|
||||||
|
#if !defined(BSD)
|
||||||
|
fclose(frandom);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int create_directory(char *slug)
|
int create_directory(char *slug)
|
||||||
|
|||||||
Reference in New Issue
Block a user