summarylogtreecommitdiffstats
path: root/certificates.c.diff
diff options
context:
space:
mode:
Diffstat (limited to 'certificates.c.diff')
-rw-r--r--certificates.c.diff69
1 files changed, 69 insertions, 0 deletions
diff --git a/certificates.c.diff b/certificates.c.diff
new file mode 100644
index 000000000000..648976a08c47
--- /dev/null
+++ b/certificates.c.diff
@@ -0,0 +1,69 @@
+Index: src/certificates.c
+===================================================================
+--- src/certificates.c (revision 2241)
++++ src/certificates.c (working copy)
+@@ -805,8 +805,12 @@
+
+ if(stat(keyfilename,&buf) || buf.st_size==0)
+ {
+- if(CreatePrivateKey(keyfilename))
+- {PrintMessage(Warning,"Could not create the WWWOFFLE private key file '%s'.",keyfilename);goto finished;}
++ err=CreatePrivateKey(keyfilename);
++
++ if(err<0)
++ {PrintMessage(Warning,"Could not create the WWWOFFLE private key file '%s'; already exists, using it.",keyfilename); goto readagain;}
++ else if(err>0)
++ {PrintMessage(Warning,"Could not create the WWWOFFLE private key file '%s'.",keyfilename); goto finished;}
+ }
+
+ if(stat(keyfilename,&buf) || buf.st_size==0)
+@@ -838,8 +842,10 @@
+ else
+ err=CreateCertificate(crtfilename,hostname,NULL,privkey);
+
+- if(err)
+- {PrintMessage(Warning,"Could not create the WWWOFFLE certificate file '%s'.",crtfilename);goto finished;}
++ if(err<0)
++ {PrintMessage(Warning,"Could not create the WWWOFFLE certificate file '%s'; already exists, using it.",crtfilename); goto readagain;}
++ else if(err>0)
++ {PrintMessage(Warning,"Could not create the WWWOFFLE certificate file '%s'.",crtfilename); goto finished;}
+ }
+
+ if(stat(crtfilename,&buf) || buf.st_size==0)
+@@ -896,8 +902,17 @@
+
+ err=gnutls_certificate_set_x509_key(cred,&crt,1,privkey);
+ if(err!=GNUTLS_E_SUCCESS)
+- {PrintMessage(Warning,"Could not set private key for %s credentials for '%s' [%s].",server?"server":"fake",hostname,gnutls_strerror(err));gnutls_certificate_free_credentials(cred);goto finished;}
++ {
++ gnutls_certificate_free_credentials(cred);
+
++ PrintMessage(Warning,"Could not set private key for %s credentials for '%s' [%s].",server?"server":"fake",hostname,gnutls_strerror(err));
++
++ if(unlink(crtfilename))
++ {PrintMessage(Warning,"Cannot delete the invalid WWWOFFLE %s certificate file for '%s'.",server?"server":"fake",hostname); goto finished;}
++
++ goto readagain;
++ }
++
+ if(dh_params)
+ gnutls_certificate_set_dh_params(cred,dh_params);
+
+@@ -946,7 +961,7 @@
+
+ /* Create the file for the certificate. */
+
+- fd=open(filename,O_WRONLY|O_CREAT|O_TRUNC|O_EXCL|O_BINARY,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
++ fd=open(filename,O_WRONLY|O_CREAT|O_EXCL|O_BINARY,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
+ if(fd<0)
+ {PrintMessage(Warning,"Could not open certificate file '%s' for writing [%!s].",filename);return(-1);}
+ close(fd);
+@@ -1102,7 +1117,7 @@
+
+ /* Create the file for the certificate. */
+
+- fd=open(filename,O_WRONLY|O_CREAT|O_TRUNC|O_EXCL|O_BINARY,S_IRUSR|S_IWUSR);
++ fd=open(filename,O_WRONLY|O_CREAT|O_EXCL|O_BINARY,S_IRUSR|S_IWUSR);
+ if(fd<0)
+ {PrintMessage(Warning,"Could not open private key file '%s' for writing [%!s].",filename);return(-1);}
+ close(fd);