View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update | 
|---|---|---|---|---|---|
| 0004745 | SOGo | Web Mail | public | 2019-05-10 22:14 | 2019-08-20 11:59 | 
| Reporter | schmirl | Assigned To | ludovic | ||
| Priority | normal | Severity | minor | Reproducibility | always | 
| Status | resolved | Resolution | fixed | ||
| Product Version | 4.0.7 | ||||
| Fixed in Version | 4.1.0 | ||||
| Summary | 0004745: Segfaults in S/MIME code | ||||
| Description | I get a segfault when trying to open an encrypted mail in the WebUI which can't be decrypted with my key. Some functions in NSData+SMIME.m return an uninitialized pointer instead of NULL in case of an error. Patch attached.  | ||||
| Steps To Reproduce | Try to open an encrypted mail you have no key for.  | ||||
| Additional Information | The patch initializes "output" where it's defined. In two functions, "output" had been initialized correctly several lines below its definition. I changed these, too. I think its clearer this way.  | ||||
| Tags | No tags attached. | ||||
| 
	  SOGo-initialize_output.patch (1,397 bytes)   
 
--- SoObjects/Mailer/NSData+SMIME.m.orig	2019-05-10 23:32:24.492723698 +0200
+++ SoObjects/Mailer/NSData+SMIME.m	2019-05-10 23:38:46.928740089 +0200
@@ -47,7 +47,7 @@
 //
 - (NSData *) signUsingCertificateAndKey: (NSData *) theData
 {
-  NSData *output;
+  NSData *output = NULL;
 
   BIO *tbio = NULL, *sbio = NULL, *obio = NULL;
   X509 *scert = NULL;
@@ -65,7 +65,6 @@
   
   OpenSSL_add_all_algorithms();
   ERR_load_crypto_strings();
-  output = nil;
   
   bytes = [theData bytes];
   len = [theData length];
@@ -128,7 +127,7 @@
 //
 - (NSData *) encryptUsingCertificate: (NSData *) theData
 {
-  NSData *output;
+  NSData *output = NULL;
 
   BUF_MEM *bptr = NULL;
   BIO *tbio = NULL, *sbio = NULL, *obio = NULL;
@@ -215,7 +214,7 @@
 //
 - (NSData *) decryptUsingCertificate: (NSData *) theData
 {
-  NSData *output;
+  NSData *output = NULL;
 
   BIO *tbio, *sbio, *obio;
   BUF_MEM *bptr;
@@ -311,7 +310,7 @@
 //
 - (NSData *) convertPKCS12ToPEMUsingPassword: (NSString *) thePassword
 {
-  NSData *output;
+  NSData *output = NULL;
 
   BIO *ibio, *obio;
   EVP_PKEY *pkey;
@@ -326,7 +325,6 @@
 
   OpenSSL_add_all_algorithms();
   ERR_load_crypto_strings();
-  output = nil;
 
   bytes = [self bytes];
   len = [self length];
@@ -383,7 +381,7 @@
 //
 - (NSData *) signersFromPKCS7
 {
-  NSData *output;
+  NSData *output = NULL;
 
   STACK_OF(X509) *certs = NULL;
   BIO *ibio, *obio;
 | 
|
| 
	 My patch for opaque signed mails has been commited yesterday (0004582). My patch introduces another uninitialized pointer (patch was based on SOGo 4.0.6 - I copied parts from one of the functions which was vulnerable in 4.0.6). Patch attached.  | 
|
| 
	  initialize_output.diff (322 bytes)   
 
--- UIxMailPartEncryptedViewer.m.orig	2019-08-20 10:41:50.994186817 +0200
+++ UIxMailPartEncryptedViewer.m	2019-08-20 10:42:09.798051760 +0200
@@ -93,7 +93,7 @@
 
 - (NSData *) _processMessageWith: (NSData *) signedData
 {
-  NSData *output;
+  NSData *output = NULL;
 
   STACK_OF(X509) *certs;
   X509_STORE *x509Store;
 | 
|
| 
	 Thanks I've pushed a fix.  | 
|
| Date Modified | Username | Field | Change | 
|---|---|---|---|
| 2019-05-10 22:14 | schmirl | New Issue | |
| 2019-05-10 22:14 | schmirl | File Added: SOGo-initialize_output.patch | |
| 2019-05-23 13:25 | ludovic | Changeset attached | => sogo master 29f5357a | 
| 2019-05-23 13:25 | ludovic | Assigned To | => ludovic | 
| 2019-05-23 13:25 | ludovic | Resolution | open => fixed | 
| 2019-05-23 13:25 | ludovic | Status | new => resolved | 
| 2019-05-23 13:25 | ludovic | Fixed in Version | => 4.0.8 | 
| 2019-08-20 08:56 | schmirl | Note Added: 0013703 | |
| 2019-08-20 08:56 | schmirl | Status | resolved => feedback | 
| 2019-08-20 08:56 | schmirl | Resolution | fixed => reopened | 
| 2019-08-20 08:57 | schmirl | File Added: initialize_output.diff | |
| 2019-08-20 11:59 | ludovic | Note Added: 0013704 | |
| 2019-08-20 11:59 | ludovic | Status | feedback => resolved | 
| 2019-08-20 11:59 | ludovic | Fixed in Version | 4.0.8 => 4.1.0 | 
| 2019-08-20 11:59 | ludovic | Resolution | reopened => fixed |