char *servername_conf;
int header = 0;
char buf[1024], *p;
- FILE *fp, *randomp;
+ FILE *fp = NULL, *randomp;
size_t len;
char *server_tmp;
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;
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");