X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=etc%2Fafpd%2Fstatus.c;h=8147a038bc687e65787b3cd092b35c06c715bae5;hp=b264bbb9b7ed8116706ff9394363c576713c87bb;hb=ff3b4646472add7902b0d36dd1a941ec1a54e999;hpb=ec3fb8214e130311c2ac5481b9c61ba15fdc1ed8 diff --git a/etc/afpd/status.c b/etc/afpd/status.c index b264bbb9..8147a038 100644 --- a/etc/afpd/status.c +++ b/etc/afpd/status.c @@ -560,7 +560,7 @@ void set_signature(struct afp_options *options) { char *servername_conf; int header = 0; char buf[1024], *p; - FILE *fp, *randomp; + FILE *fp = NULL, *randomp; size_t len; char *server_tmp; @@ -663,14 +663,14 @@ server_signature_auto: options->sigconffile, strerror(errno)); goto server_signature_random; } - } else { /* conf file don't exist */ + } else { /* conf file don't exist */ if (( fd = creat(options->sigconffile, 0644 )) < 0 ) { - LOG(log_error, logtype_atalkd, "ERROR: Cannot create %s (%s). Using one-time signature.", + LOG(log_error, logtype_atalkd, "Cannot create %s (%s). Using one-time signature.", options->sigconffile, strerror(errno)); goto server_signature_random; } if (( fp = fdopen( fd, "w" )) == NULL ) { - LOG(log_error, logtype_atalkd, "ERROR: Cannot fdopen %s (%s). Using one-time signature.", + LOG(log_error, logtype_atalkd, "Cannot fdopen %s (%s). Using one-time signature.", options->sigconffile, strerror(errno)); close(fd); goto server_signature_random; @@ -682,41 +682,9 @@ server_signature_auto: server_signature_random: /* generate signature from random number */ - if ((randomp = fopen("/dev/urandom", "r")) != NULL) { /* generate from /dev/urandom */ - for (i=0 ; i<16 ; i++) { - (options->signature)[i] = fgetc(randomp); - } - LOG(log_note, logtype_afpd, - "generate %s's signature %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X from /dev/urandom", - server_tmp, - (options->signature)[ 0], (options->signature)[ 1], - (options->signature)[ 2], (options->signature)[ 3], - (options->signature)[ 4], (options->signature)[ 5], - (options->signature)[ 6], (options->signature)[ 7], - (options->signature)[ 8], (options->signature)[ 9], - (options->signature)[10], (options->signature)[11], - (options->signature)[12], (options->signature)[13], - (options->signature)[14], (options->signature)[15]); - - } else { /* genarate from random() because cannot open /dev/urandom */ - srandom((unsigned int)time(NULL) + (unsigned int)options + (unsigned int)server_tmp); - for (i=0 ; i<16 ; i++) { - (options->signature)[i] = random() & 0xFF; - } - LOG(log_note, logtype_afpd, - "generate %s's signature %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X from random()", - server_tmp, - (options->signature)[ 0], (options->signature)[ 1], - (options->signature)[ 2], (options->signature)[ 3], - (options->signature)[ 4], (options->signature)[ 5], - (options->signature)[ 6], (options->signature)[ 7], - (options->signature)[ 8], (options->signature)[ 9], - (options->signature)[10], (options->signature)[11], - (options->signature)[12], (options->signature)[13], - (options->signature)[14], (options->signature)[15]); - } + randombytes(options->signature, 16); - if (fp && header) { /* conf file is created or size=0 */ + if (fp && header) { /* conf file is created or size=0 */ fprintf(fp, "# DON'T TOUCH NOR COPY THOUGHTLESSLY!\n"); fprintf(fp, "# This file is auto-generated by afpd.\n"); fprintf(fp, "# \n");