- added covscan,samba-4.10-macros patches from Fedora auto/th/openchange-2.3-39
authorJakub Bogusz <qboosh@pld-linux.org>
Wed, 10 Apr 2019 19:03:14 +0000 (21:03 +0200)
committerJakub Bogusz <qboosh@pld-linux.org>
Wed, 10 Apr 2019 19:03:14 +0000 (21:03 +0200)
- updated disable-mapiproxy patch (basing on Fedora disable-server-tools-build patch)
- release 39 (for samba 4.10.2)

disable-mapiproxy.patch
openchange-covscan.patch [new file with mode: 0644]
openchange-samba-4.10-macros.patch [new file with mode: 0644]
openchange.spec

index 9435bfd87cf68847026e746557c95e92a3aedefa..8cc2ec994d658624b7c9537687d58cf50b013b86 100644 (file)
@@ -10,3 +10,32 @@ diff -up openchange-2.1-QUADRANT/configure.ac.OC_RULE_ADD-fix openchange-2.1-QUA
                mapiproxy=1
        fi
  fi
+--- openchange-openchange-2.3-VULCAN/configure.ac.orig 2019-04-10 18:45:21.182499045 +0200
++++ openchange-openchange-2.3-VULCAN/configure.ac      2019-04-10 19:39:02.688379984 +0200
+@@ -284,7 +284,7 @@
+ dnl ---------------------------------------------------------------------------
+ dnl Check for check (unittest library)
+ dnl ---------------------------------------------------------------------------
+-PKG_CHECK_MODULES(CHECK, check, [testsuite=1], [AC_MSG_WARN(Conditions unmet for unit testing support)])
++#PKG_CHECK_MODULES(CHECK, check, [testsuite=1], [AC_MSG_WARN(Conditions unmet for unit testing support)])
+ AC_SUBST(CHECK_CFLAGS)
+ AC_SUBST(CHECK_LIBS)
+ OC_RULE_ADD(testsuite, TESTSUITE)
+@@ -689,7 +689,7 @@
+ OC_RULE_ADD(openchangeclient, TOOLS)
+ #OC_RULE_ADD(mapistore_fsocpf, MAPISTORE)
+ OC_RULE_ADD(mapipropsdump, TOOLS)
+-OC_RULE_ADD(ocnotify, TOOLS)
++#OC_RULE_ADD(ocnotify, TOOLS)
+ OC_RULE_ADD(exchange2ical, TOOLS)
+ OC_RULE_ADD(rpcextract, TOOLS)
+ OC_RULE_ADD(openchangepfadmin, TOOLS)
+@@ -698,7 +698,7 @@
+ OC_RULE_ADD(openchangemapidump, TOOLS)
+ OC_RULE_ADD(schemaIDGUID, TOOLS)
+-OC_RULE_ADD(check_fasttransfer, TOOLS)
++#OC_RULE_ADD(check_fasttransfer, TOOLS)
+ OC_RULE_ADD(test_asyncnotif, TOOLS)
diff --git a/openchange-covscan.patch b/openchange-covscan.patch
new file mode 100644 (file)
index 0000000..69b2890
--- /dev/null
@@ -0,0 +1,675 @@
+diff -up openchange-openchange-2.3-VULCAN/libexchange2ical/exchange2ical_property.c.covscan openchange-openchange-2.3-VULCAN/libexchange2ical/exchange2ical_property.c
+--- openchange-openchange-2.3-VULCAN/libexchange2ical/exchange2ical_property.c.covscan 2018-07-19 13:53:41.281450703 +0200
++++ openchange-openchange-2.3-VULCAN/libexchange2ical/exchange2ical_property.c 2018-07-19 13:53:41.285450703 +0200
+@@ -53,6 +53,7 @@ static void openchange_all_string_sub(ch
+       }
+ }
++#if 0
+ struct RRULE_byday {
+       uint16_t        DayOfWeek;
+       const char      *DayName;
+@@ -68,6 +69,7 @@ static const struct RRULE_byday RRULE_by
+       { 0x0006,       "SA" },
+       { 0x0007,       NULL }
+ };
++#endif
+ static const char *get_filename(const char *filename)
+ {
+diff -up openchange-openchange-2.3-VULCAN/libexchange2ical/exchange2ical_utils.c.covscan openchange-openchange-2.3-VULCAN/libexchange2ical/exchange2ical_utils.c
+--- openchange-openchange-2.3-VULCAN/libexchange2ical/exchange2ical_utils.c.covscan    2018-07-19 13:53:41.281450703 +0200
++++ openchange-openchange-2.3-VULCAN/libexchange2ical/exchange2ical_utils.c    2018-07-19 13:53:41.285450703 +0200
+@@ -232,7 +232,7 @@ uint32_t get_exchange_rdfDays_from_ical(
+ struct icaltimetype get_icaltimetype_from_tm(struct tm *tm)
+ {
+-      struct icaltimetype tt;
++      struct icaltimetype tt = icaltime_null_time ();
+       tt.year   = tm->tm_year+1900;
+       tt.month  = tm->tm_mon+1;
+@@ -259,7 +259,7 @@ struct icaltimetype get_icaltimetype_fro
+ struct icaltimetype get_icaldate_from_tm(struct tm *tm)
+ {
+-      struct icaltimetype tt;
++      struct icaltimetype tt = icaltime_null_time ();
+       tt.year   = tm->tm_year+1900;
+       tt.month  = tm->tm_mon+1;
+@@ -267,6 +267,7 @@ struct icaltimetype get_icaldate_from_tm
+       tt.hour   = 0;
+       tt.minute = 0;
+       tt.second = 0;
++      tt.zone   = NULL;
+       tt.is_date     = 1;
+       tt.is_daylight = 0;
+@@ -292,7 +293,7 @@ struct tm *get_tm_from_FILETIME(const st
+ struct icaltimetype get_icaltime_from_FILETIME(const struct FILETIME *ft)
+ {
+-      struct icaltimetype     tt;
++      struct icaltimetype     tt = icaltime_null_time ();
+       NTTIME                  nttime;
+       struct timeval          temp_timeval;
+       struct tm               *tm;
+@@ -317,7 +318,7 @@ struct icaltimetype get_icaltime_from_FI
+ struct icaltimetype get_icaltime_from_FILETIME_UTC(const struct FILETIME *ft)
+ {
+-      struct icaltimetype     tt;
++      struct icaltimetype     tt = icaltime_null_time ();
+       NTTIME                  nttime;
+       struct timeval          temp_timeval;
+       struct tm               *tm;
+@@ -342,7 +343,7 @@ struct icaltimetype get_icaltime_from_FI
+ struct icaltimetype get_icaldate_from_FILETIME(const struct FILETIME *ft)
+ {
+-      struct icaltimetype     tt;
++      struct icaltimetype     tt = icaltime_null_time ();
+       NTTIME                  nttime;
+       struct timeval          temp_timeval;
+       struct tm               *tm;
+@@ -373,7 +374,7 @@ struct icaltimetype get_icaldate_from_FI
+ struct icaltimetype get_icaldate_from_GlobalObjectId(struct GlobalObjectId *GlobalObjectId)
+ {
+-      struct icaltimetype     tt;
++      struct icaltimetype     tt = icaltime_null_time ();
+       tt.year   = GlobalObjectId->YH;
+       tt.year   = tt.year <<8;
+       tt.year   |= GlobalObjectId->YL;
+@@ -513,7 +514,10 @@ uint32_t get_minutes_from_icaltimetype(i
+       time_t                  time;
+       NTTIME                  nttime;
+       struct timeval          t;
+-      
++
++      if (icaltime_is_null_time(icaltime) || !icaltime_is_valid_time(icaltime))
++              return 0;
++
+       tm.tm_year      = icaltime.year - 1900;
+       tm.tm_mon       = icaltime.month - 1;
+       tm.tm_mday      = icaltime.day;
+diff -up openchange-openchange-2.3-VULCAN/libexchange2ical/ical2exchange_property.c.covscan openchange-openchange-2.3-VULCAN/libexchange2ical/ical2exchange_property.c
+--- openchange-openchange-2.3-VULCAN/libexchange2ical/ical2exchange_property.c.covscan 2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libexchange2ical/ical2exchange_property.c 2018-07-19 13:53:41.286450703 +0200
+@@ -147,7 +147,6 @@ void ical2exchange_property_CATEGORIES(s
+       struct StringArray_r *sArray;
+       char **stringArray = NULL;
+       char string[256];
+-      char *value;
+       char *tok;
+       icalproperty *categoriesProp;
+       uint32_t i = 0;
+@@ -160,8 +159,10 @@ void ical2exchange_property_CATEGORIES(s
+       categoriesProp = icalcomponent_get_first_property(ical2exchange->categoriesEvent, ICAL_CATEGORIES_PROPERTY);
+       sArray->cValues = 0;
+       while(categoriesProp){
+-      
+-              value = strdup(icalproperty_get_categories(categoriesProp));
++              const char *categories = icalproperty_get_categories(categoriesProp);
++              char *value;
++
++              value = strdup(categories ? categories : "");
+               tok = strtok(value, ",");
+               while(tok){
+                       if(!stringArray){
+@@ -185,6 +186,7 @@ void ical2exchange_property_CATEGORIES(s
+               }
+               categoriesProp = icalcomponent_get_next_property(ical2exchange->categoriesEvent, ICAL_CATEGORIES_PROPERTY);
++              free(value);
+       }
+       sArray->lppszA= (const char **) stringArray;
+       
+@@ -519,6 +521,7 @@ void ical2exchange_property_RRULE_EXDATE
+               
+               ritr = icalrecur_iterator_new(irt,dtstart);
+               next=icalrecur_iterator_next(ritr);
++              last = icaltime_null_time();
+               
+               while (!icaltime_is_null_time(next)){
+                       last = next;
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/examples/foldertree.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/examples/foldertree.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/examples/foldertree.cpp.covscan 2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/examples/foldertree.cpp 2018-07-19 13:53:41.286450703 +0200
+@@ -65,12 +65,12 @@ int main ()
+               }
+         }
+-        catch (libmapipp::mapi_exception e) // Catch any MAPI exceptions
++        catch (libmapipp::mapi_exception &e) // Catch any MAPI exceptions
+         {
+                 std::cout << "MAPI Exception in main: " <<  e.what()
+                         << std::endl;
+         }
+-        catch (std::runtime_error e) // Catch any other runtime exceptions
++        catch (std::runtime_error &e) // Catch any other runtime exceptions
+         {
+                 std::cout << "std::runtime_error exception in main: "
+                         << e.what() << std::endl;
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/examples/messages.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/examples/messages.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/examples/messages.cpp.covscan   2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/examples/messages.cpp   2018-07-19 13:53:41.286450703 +0200
+@@ -61,12 +61,12 @@ int main ()
+                       }
+               }
+         }
+-        catch (libmapipp::mapi_exception e) // Catch any MAPI exceptions
++        catch (libmapipp::mapi_exception &e) // Catch any MAPI exceptions
+         {
+                 std::cout << "MAPI Exception in main: " <<  e.what()
+                         << std::endl;
+         }
+-        catch (std::runtime_error e) // Catch any other runtime exceptions
++        catch (std::runtime_error &e) // Catch any other runtime exceptions
+         {
+                 std::cout << "std::runtime_error exception in main: "
+                         << e.what() << std::endl;
+diff -up openchange-openchange-2.3-VULCAN/libmapi/FXICS.c.covscan openchange-openchange-2.3-VULCAN/libmapi/FXICS.c
+--- openchange-openchange-2.3-VULCAN/libmapi/FXICS.c.covscan   2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi/FXICS.c   2018-07-19 13:53:41.286450703 +0200
+@@ -800,6 +800,7 @@ _PUBLIC_ enum MAPISTATUS FXGetBuffer(map
+       if ((retval = mapi_object_get_logon_id(obj_source_context, &logon_id)) != MAPI_E_SUCCESS)
+               return retval;
++      memset(&request, 0, sizeof(struct FastTransferSourceGetBuffer_req));
+       mem_ctx = talloc_named(session, 0, "FXGetBuffer");
+       size = 0;
+diff -up openchange-openchange-2.3-VULCAN/libmapi/idset.c.covscan openchange-openchange-2.3-VULCAN/libmapi/idset.c
+--- openchange-openchange-2.3-VULCAN/libmapi/idset.c.covscan   2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi/idset.c   2018-07-19 13:53:41.286450703 +0200
+@@ -383,6 +383,7 @@ _PUBLIC_ struct idset *IDSET_parse(TALLO
+                       total_bytes += 16;
+               }
++              byte_count = 0;
+               globset.length = buffer.length - 16;
+               globset.data = (uint8_t *) buffer.data + 16;
+               idset->ranges = GLOBSET_parse(idset, globset, &idset->range_count, &byte_count);
+@@ -1182,7 +1183,8 @@ _PUBLIC_ void RAWIDSET_push_eid(struct r
+               }
+               else {
+                       glob_idset = RAWIDSET_make(rawidset->mem_ctx, true, rawidset->single);
+-                      last_glob_idset->next = glob_idset;
++                      if (last_glob_idset)
++                              last_glob_idset->next = glob_idset;
+               }
+               glob_idset->repl.id = eid_id;
+       }
+diff -up openchange-openchange-2.3-VULCAN/libmapi/IMAPIProp.c.covscan openchange-openchange-2.3-VULCAN/libmapi/IMAPIProp.c
+--- openchange-openchange-2.3-VULCAN/libmapi/IMAPIProp.c.covscan       2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi/IMAPIProp.c       2018-07-19 13:53:41.287450703 +0200
+@@ -1122,6 +1122,7 @@ _PUBLIC_ enum MAPISTATUS QueryNamedPrope
+               return retval;
+       /* Initialization */
++      memset(&request, 0, sizeof(struct QueryNamedProperties_req));
+       mem_ctx = talloc_named(session, 0, "QueryNamesFromIDs");
+       size = 0;
+diff -up openchange-openchange-2.3-VULCAN/libmapi/IMAPISupport.c.covscan openchange-openchange-2.3-VULCAN/libmapi/IMAPISupport.c
+--- openchange-openchange-2.3-VULCAN/libmapi/IMAPISupport.c.covscan    2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi/IMAPISupport.c    2018-07-19 13:53:41.287450703 +0200
+@@ -101,6 +101,7 @@ _PUBLIC_ enum MAPISTATUS Subscribe(mapi_
+       if ((retval = mapi_object_get_logon_id(obj, &logon_id)) != MAPI_E_SUCCESS)
+               return retval;
++      memset(&request, 0, sizeof(struct RegisterNotification_req));
+       mem_ctx = talloc_named(session, 0, "Subscribe");
+       /* Fill the Subscribe operation */
+diff -up openchange-openchange-2.3-VULCAN/libmapi/IMessage.c.covscan openchange-openchange-2.3-VULCAN/libmapi/IMessage.c
+--- openchange-openchange-2.3-VULCAN/libmapi/IMessage.c.covscan        2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi/IMessage.c        2018-07-19 13:53:41.287450703 +0200
+@@ -499,6 +499,8 @@ _PUBLIC_ enum MAPISTATUS SetRecipientTyp
+       enum MAPISTATUS         retval;
+       struct SPropValue       lpProp;
++      memset(&lpProp, 0, sizeof(struct SPropValue));
++
+       lpProp.ulPropTag = PR_RECIPIENT_TYPE;
+       lpProp.value.l = RecipClass;
+@@ -1648,6 +1650,7 @@ _PUBLIC_ enum MAPISTATUS OpenEmbeddedMes
+       if ((retval = mapi_object_get_logon_id(obj_attach, &logon_id)) != MAPI_E_SUCCESS)
+               return retval;
++      memset(&lpProp, 0, sizeof(struct SPropValue));
+       mem_ctx = talloc_named(session, 0, "OpenEmbeddedMessage");
+       /* Fill the OpenEmbeddedMessage request */
+diff -up openchange-openchange-2.3-VULCAN/libmapi/IStoreFolder.c.covscan openchange-openchange-2.3-VULCAN/libmapi/IStoreFolder.c
+--- openchange-openchange-2.3-VULCAN/libmapi/IStoreFolder.c.covscan    2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi/IStoreFolder.c    2018-07-19 13:53:41.287450703 +0200
+@@ -93,6 +93,7 @@ _PUBLIC_ enum MAPISTATUS OpenMessage(map
+       if ((retval = mapi_object_get_logon_id(obj_store, &logon_id)) != MAPI_E_SUCCESS)
+               return retval;
++      memset(&lpProp, 0, sizeof(struct SPropValue));
+       mem_ctx = talloc_named(session, 0, "OpenMessage");
+       /* Fill the OpenMessage operation */
+@@ -232,6 +233,7 @@ _PUBLIC_ enum MAPISTATUS ReloadCachedInf
+       if ((retval = mapi_object_get_logon_id(obj_message, &logon_id)) != MAPI_E_SUCCESS)
+               return retval;
++      memset(&lpProp, 0, sizeof(struct SPropValue));
+       mem_ctx = talloc_named(session, 0, "ReloadCachedInformation");
+       /* Fill the ReloadCachedInformation operation */
+diff -up openchange-openchange-2.3-VULCAN/libmapi/IStream.c.covscan openchange-openchange-2.3-VULCAN/libmapi/IStream.c
+--- openchange-openchange-2.3-VULCAN/libmapi/IStream.c.covscan 2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi/IStream.c 2018-07-19 13:53:41.287450703 +0200
+@@ -183,6 +183,7 @@ _PUBLIC_ enum MAPISTATUS ReadStream(mapi
+       if ((retval = mapi_object_get_logon_id(obj_stream, &logon_id)) != MAPI_E_SUCCESS)
+               return retval;
++      memset(&request, 0, sizeof(struct ReadStream_req));
+       mem_ctx = talloc_named(session, 0, "ReadStream");
+       *ByteRead = 0;
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/src/folder.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/src/folder.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/src/folder.cpp.covscan  2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/src/folder.cpp  2018-07-19 13:53:41.287450703 +0200
+@@ -57,7 +57,7 @@ folder::message_container_type folder::f
+                               message_container.push_back(message_shared_ptr(new message(m_session,
+                                                                                          m_id,
+                                                                                          row_set.aRow[i].lpProps[1].value.d)));
+-                      } catch(mapi_exception e) {
++                      } catch(mapi_exception &e) {
+                               mapi_object_release(&contents_table);
+                               throw;
+                       }
+@@ -102,7 +102,7 @@ folder::hierarchy_container_type folder:
+                       try {
+                               hierarchy_container.push_back(folder_shared_ptr(new folder(*this,
+                                                             row_set.aRow[i].lpProps[0].value.d)));
+-                      } catch(mapi_exception e) {
++                      } catch(mapi_exception &e) {
+                               mapi_object_release(&hierarchy_table);
+                               throw;
+                       }
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/src/message.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/src/message.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/src/message.cpp.covscan 2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/src/message.cpp 2018-07-19 13:53:41.287450703 +0200
+@@ -50,7 +50,7 @@ message::attachment_container_type messa
+                       try {
+                               attachment_container.push_back(attachment_shared_ptr(new attachment(*this, row_set.aRow[i].lpProps[0].value.l)));
+                       }
+-                      catch(mapi_exception e) {
++                      catch(mapi_exception &e) {
+                               mapi_object_release(&attachment_table);
+                               throw;
+                       }
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/src/session.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/src/session.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/src/session.cpp.covscan 2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/src/session.cpp 2018-07-19 13:53:41.287450703 +0200
+@@ -61,7 +61,7 @@ void session::login(const std::string& p
+       if (m_profile_name == "") { // if profile is not set, try to get default profile
+               try {
+                       m_profile_name = profile_database().get_default_profile_name();
+-              } catch(mapi_exception e) {
++              } catch(mapi_exception &e) {
+                       uninitialize();
+                       throw;
+               }
+@@ -74,7 +74,7 @@ void session::login(const std::string& p
+       try {
+               m_message_store->open(m_session);
+-      } catch (mapi_exception e) {
++      } catch (mapi_exception &e) {
+               throw;
+       }
+ }
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/tests/attach_test.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/tests/attach_test.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/tests/attach_test.cpp.covscan   2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/tests/attach_test.cpp   2018-07-19 13:53:41.287450703 +0200
+@@ -84,11 +84,11 @@ int main()
+               print_folder_tree(top_folder, mapi_session);
+       }
+-      catch (mapi_exception e) // Catch any mapi exceptions
++      catch (mapi_exception &e) // Catch any mapi exceptions
+       {
+               cout << "MAPI Exception @ main: " <<  e.what() << endl;
+       }
+-      catch (std::runtime_error e) // Catch runtime exceptions
++      catch (std::runtime_error &e) // Catch runtime exceptions
+       {
+               cout << "std::runtime_error exception @ main: " << e.what() << endl;
+       }
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/tests/exception_test.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/tests/exception_test.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/tests/exception_test.cpp.covscan        2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/tests/exception_test.cpp        2018-07-19 13:53:41.287450703 +0200
+@@ -12,7 +12,7 @@ int main()
+       try {
+               dotest();
+       }
+-      catch (libmapipp::mapi_exception e) {
++      catch (libmapipp::mapi_exception &e) {
+               std::cout << e.what() << std::endl;
+       }
+       
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/tests/profile_test.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/tests/profile_test.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/tests/profile_test.cpp.covscan  2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/tests/profile_test.cpp  2018-07-19 13:53:41.287450703 +0200
+@@ -27,15 +27,18 @@
+ #define PROFILEDB_NAME_TEMPLATE "/tmp/mapidbXXXXXX"
+ int main ()
+ {
++      char *tmpname = NULL, *tmpname2 = NULL;
++
+       try {
+               libmapipp::profile_database db;
+               std::cout << "default profile name: " << db.get_default_profile_name() << std::endl;
+               {
+-                      char *tmpname = (char*) calloc(sizeof(PROFILEDB_NAME_TEMPLATE) + 1, sizeof(char));
+-                      strncpy(tmpname, PROFILEDB_NAME_TEMPLATE, sizeof(PROFILEDB_NAME_TEMPLATE));
+-                      int ret = mkstemp(tmpname);
++                      int ret;
++
++                      tmpname = strdup(PROFILEDB_NAME_TEMPLATE);
++                      ret = mkstemp(tmpname);
+                       if (ret < 0) {
+                               std::cout << "failed to create temporary file: " << strerror(errno) << std::endl;
+                       }
+@@ -45,12 +48,15 @@ int main ()
+                               std::cout << "failed to create a temporary profile store" << std::endl;
+                       }
+                       unlink(tmpname);
++                      free(tmpname);
++                      tmpname = NULL;
+               }
+               
+               {
+-                      char *tmpname2 = (char*) calloc(sizeof(PROFILEDB_NAME_TEMPLATE) + 1, sizeof(char));
+-                      strncpy(tmpname2, PROFILEDB_NAME_TEMPLATE, sizeof(PROFILEDB_NAME_TEMPLATE));
+-                      int ret = mkstemp(tmpname2);
++                      int ret;
++
++                      tmpname2 = strdup(PROFILEDB_NAME_TEMPLATE);
++                      ret = mkstemp(tmpname2);
+                       if (ret < 0) {
+                               std::cout << "failed to create temporary file: " << strerror(errno) << std::endl;
+                       }
+@@ -60,19 +66,33 @@ int main ()
+                               std::cout << "failed to create a temporary profile store with std::string" << std::endl;
+                       }
+                       unlink(tmpname2);
++                      free(tmpname2);
++                      tmpname2 = NULL;
+               }
+               std::cout << "finished profile and profile database tests" << std::endl;
+       }
+-      catch (libmapipp::mapi_exception e) // Catch any mapi exceptions
++      catch (libmapipp::mapi_exception &e) // Catch any mapi exceptions
+       {
+               std::cout << "MAPI Exception @ main: " <<  e.what() << std::endl;
+       }
+-      catch (std::runtime_error e) // Catch runtime exceptions
++      catch (std::runtime_error &e) // Catch runtime exceptions
+       {
+               std::cout << "std::runtime_error exception @ main: " << e.what() << std::endl;
+       }
++      if (tmpname) {
++              unlink(tmpname);
++              free(tmpname);
++              tmpname = NULL;
++      }
++
++      if (tmpname2) {
++              unlink(tmpname2);
++              free(tmpname2);
++              tmpname2 = NULL;
++      }
++
+       return 0;
+ }
+diff -up openchange-openchange-2.3-VULCAN/libmapi++/tests/test.cpp.covscan openchange-openchange-2.3-VULCAN/libmapi++/tests/test.cpp
+--- openchange-openchange-2.3-VULCAN/libmapi++/tests/test.cpp.covscan  2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi++/tests/test.cpp  2018-07-19 13:53:41.288450703 +0200
+@@ -126,11 +126,11 @@ int main ()
+               cout << "finished session" << endl;
+       }
+-      catch (mapi_exception e) // Catch any mapi exceptions
++      catch (mapi_exception &e) // Catch any mapi exceptions
+       {
+               cout << "MAPI Exception @ main: " <<  e.what() << endl;
+       }
+-      catch (std::runtime_error e) // Catch runtime exceptions
++      catch (std::runtime_error &e) // Catch runtime exceptions
+       {
+               cout << "std::runtime_error exception @ main: " << e.what() << endl;
+diff -up openchange-openchange-2.3-VULCAN/libocpf/ocpf_api.c.covscan openchange-openchange-2.3-VULCAN/libocpf/ocpf_api.c
+--- openchange-openchange-2.3-VULCAN/libocpf/ocpf_api.c.covscan        2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libocpf/ocpf_api.c        2018-07-19 13:53:41.288450703 +0200
+@@ -316,6 +316,8 @@ int ocpf_propvalue(struct ocpf_context *
+       if (!ocpf || !ocpf->mem_ctx) return OCPF_ERROR;
+       if (!ctx) return OCPF_ERROR;
++      memset(&lpProps, 0, sizeof(struct SPropValue));
++
+       switch (scope) {
+       case kw_PROPERTY:
+               /* Sanity check: do not insert the same property twice */
+diff -up openchange-openchange-2.3-VULCAN/libocpf/ocpf_public.c.covscan openchange-openchange-2.3-VULCAN/libocpf/ocpf_public.c
+--- openchange-openchange-2.3-VULCAN/libocpf/ocpf_public.c.covscan     2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libocpf/ocpf_public.c     2018-07-19 13:53:41.288450703 +0200
+@@ -537,6 +537,8 @@ static bool set_external_recipients(TALL
+       uint32_t                last;
+       struct SPropValue       SPropValue;
++      memset(&SPropValue, 0, sizeof(struct SPropValue));
++
+       SRowSet->aRow = talloc_realloc(mem_ctx, SRowSet->aRow, struct SRow, SRowSet->cRows + 2);
+       last = SRowSet->cRows;
+       SRowSet->aRow[last].cValues = 0;
+@@ -626,6 +628,8 @@ _PUBLIC_ enum MAPISTATUS ocpf_set_Recipi
+       MAPI_RETVAL_IF(!ctx->recipients->cRows, MAPI_E_NOT_FOUND, NULL);
++      memset(&SPropValue, 0, sizeof(struct SPropValue));
++
+       SPropTagArray = set_SPropTagArray(mem_ctx, 0x8,
+                                         PidTagObjectType,
+                                         PidTagDisplayName,
+diff -up openchange-openchange-2.3-VULCAN/ndr_mapi.c.covscan openchange-openchange-2.3-VULCAN/ndr_mapi.c
+--- openchange-openchange-2.3-VULCAN/ndr_mapi.c.covscan        2018-07-19 13:53:41.276450703 +0200
++++ openchange-openchange-2.3-VULCAN/ndr_mapi.c        2018-07-19 13:53:41.288450703 +0200
+@@ -1310,8 +1310,11 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo
+               NDR_PULL_ALLOC(ndr, r->out.pulTimeStamp);
+               *r->out.pulTimeStamp = *r->in.pulTimeStamp;
+               NDR_PULL_ALLOC(ndr, r->out.pcbAuxOut);
+-              *r->out.pcbAuxOut = *r->in.pcbAuxOut;
+-      }               
++              if (r->in.pcbAuxOut)
++                      *r->out.pcbAuxOut = *r->in.pcbAuxOut;
++              else
++                      *r->out.pcbAuxOut = 0;
++      }
+       if (flags & NDR_OUT) {
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+diff -up openchange-openchange-2.3-VULCAN/script/makepropslist.py.covscan openchange-openchange-2.3-VULCAN/script/makepropslist.py
+--- openchange-openchange-2.3-VULCAN/script/makepropslist.py.covscan   2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/script/makepropslist.py   2018-07-19 13:53:41.288450703 +0200
+@@ -992,7 +992,7 @@ def check_duplicate_alternative_names():
+                               if previous_alternative_names.has_key(altname):
+                                       print "\tIn section", entry["OXPROPS_Sect"], ", alternative name:", altname, "duplicates name in section", previous_alternative_names[altname]
+                               if previous_canonical_names.has_key(altname):
+-                                      print "\tIn section", entry["OXPROPS_Sect"], ", alternative name:", altname, "duplicates canonical name in section", previous_alternative_names[altname]
++                                      print "\tIn section", entry["OXPROPS_Sect"], ", alternative name:", altname, "duplicates canonical name in section", previous_canonical_names[altname]
+                               previous_alternative_names[altname] = (entry["OXPROPS_Sect"])
+ def check_duplicate_propids():
+diff -up openchange-openchange-2.3-VULCAN/testprogs/test_asyncnotif.c.covscan openchange-openchange-2.3-VULCAN/testprogs/test_asyncnotif.c
+--- openchange-openchange-2.3-VULCAN/testprogs/test_asyncnotif.c.covscan       2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/testprogs/test_asyncnotif.c       2018-07-19 13:53:41.288450703 +0200
+@@ -109,12 +109,16 @@ static int callback(uint16_t Notificatio
+               break;
+       case fnevMbit|fnevObjectDeleted:
+               OC_DEBUG(0, "[+] Message deleted");
++              break;
+       case fnevMbit|fnevObjectModified:
+               OC_DEBUG(0, "[+] Message modified");
++              break;
+       case fnevMbit|fnevObjectMoved:
+               OC_DEBUG(0, "[+] Message moved");
++              break;
+       case fnevMbit|fnevObjectCopied:
+               OC_DEBUG(0, "[+] Message copied");
++              break;
+       case fnevMbit|fnevTableModified:
+               ctable = (struct ContentsTableChange *) NotificationData;
+               switch (ctable->TableEvent) {
+@@ -143,6 +147,7 @@ static int callback(uint16_t Notificatio
+               break;
+       case fnevMbit|fnevSbit|fnevObjectModified:
+               OC_DEBUG(0, "[+] A property on a message in a search folder has changed");
++              break;
+       case fnevMbit|fnevSbit|fnevTableModified:
+               stable = (struct ContentsTableChange *) NotificationData;
+               switch (stable->TableEvent) {
+@@ -250,6 +255,7 @@ int main(int argc, const char *argv[])
+       retval = MAPIInitialize(&mapi_ctx, opt_profdb);
+       if (retval != MAPI_E_SUCCESS) {
++              talloc_free(mem_ctx);
+               mapi_errstr("MAPIInitialize", retval);
+               exit (1);
+       }
+@@ -261,6 +267,10 @@ int main(int argc, const char *argv[])
+               SetMAPIDebugLevel(mapi_ctx, atoi(opt_debug));
+       }
++      mapi_object_init(&obj_store);
++      mapi_object_init(&obj_inbox);
++      mapi_object_init(&obj_contentstable);
++
+       /* if no profile is supplied use the default one */
+       if (!opt_profname) {
+               retval = GetDefaultProfile(mapi_ctx, &opt_profname);
+@@ -280,7 +290,6 @@ int main(int argc, const char *argv[])
+       }
+       /* Open the default message store */
+-      mapi_object_init(&obj_store);
+       retval = OpenMsgStore(session, &obj_store);
+       if (retval != MAPI_E_SUCCESS) {
+@@ -292,11 +301,9 @@ int main(int argc, const char *argv[])
+       retval = GetReceiveFolder(&obj_store, &fid, NULL);
+       MAPI_RETVAL_IF(retval, retval, mem_ctx);
+-      mapi_object_init(&obj_inbox);
+       retval = OpenFolder(&obj_store, fid, &obj_inbox);
+       MAPI_RETVAL_IF(retval, retval, mem_ctx);
+-      mapi_object_init(&obj_contentstable);
+       retval = GetContentsTable(&obj_inbox, &obj_contentstable, 0, &count);
+       printf("mailbox contains %i messages\n", count);
+diff -up openchange-openchange-2.3-VULCAN/utils/mapipropsdump.c.covscan openchange-openchange-2.3-VULCAN/utils/mapipropsdump.c
+--- openchange-openchange-2.3-VULCAN/utils/mapipropsdump.c.covscan     2018-07-19 13:53:41.276450703 +0200
++++ openchange-openchange-2.3-VULCAN/utils/mapipropsdump.c     2018-07-19 13:53:41.289450703 +0200
+@@ -79,21 +79,21 @@
+  */
+-static const const struct ndr_interface_table *load_exchange_emsmdb_dso(const char *plugin)
++static const struct ndr_interface_table *load_exchange_emsmdb_dso(const char *plugin, void **phandle)
+ {
+       const struct ndr_interface_table        *p;
+-      void                                    *handle;
+-      handle = dlopen(plugin, RTLD_NOW);
+-      if (handle == NULL) {
++      *phandle = dlopen(plugin, RTLD_NOW);
++      if (*phandle == NULL) {
+               printf("%s: Unable to open: %s\n", plugin, dlerror());
+               return NULL;
+       }
+-      p = (const struct ndr_interface_table *) dlsym(handle, "ndr_table_exchange_emsmdb");
++      p = (const struct ndr_interface_table *) dlsym(*phandle, "ndr_table_exchange_emsmdb");
+       if (!p) {
+               OC_DEBUG(0, "%s: Unable to find DCE/RPC interface table for 'ndr_table_exchange_emsmdb': %s", plugin, dlerror());
+-              dlclose(handle);
++              dlclose(*phandle);
++              *phandle = NULL;
+               return NULL;
+       }
+@@ -409,6 +409,7 @@ int main(int argc, const char *argv[])
+       struct SPropTagArray                    *s;
+       const char                              *opt_reqfile = NULL;
+       const char                              *opt_replfile = NULL;
++      void                                    *plhandle = NULL;
+       poptContext                             pc;
+       int                                     opt;
+       int                                     index = -1;
+@@ -442,7 +443,7 @@ int main(int argc, const char *argv[])
+               exit (1);
+       }
+-      p = load_exchange_emsmdb_dso(PLUGIN);
++      p = load_exchange_emsmdb_dso(PLUGIN, &plhandle);
+       if (!p) {
+               exit (1);
+       }
+@@ -454,6 +455,7 @@ int main(int argc, const char *argv[])
+       s = process_request(mem_ctx, f, opt_reqfile, &opnum, &index);
+       if (!s) {
+               talloc_free(mem_ctx);
++              dlclose(plhandle);
+               exit (1);
+       }
+@@ -461,9 +463,12 @@ int main(int argc, const char *argv[])
+       ret = process_response(mem_ctx, f, opt_replfile, s, opnum, index);
+       if (ret == -1) {
+               talloc_free(mem_ctx);
++              dlclose(plhandle);
+               exit (1);
+       }
+       talloc_free(mem_ctx);
++      dlclose(plhandle);
++
+       return (0);
+ }
+diff -up openchange-openchange-2.3-VULCAN/utils/openchangeclient.c.covscan openchange-openchange-2.3-VULCAN/utils/openchangeclient.c
+--- openchange-openchange-2.3-VULCAN/utils/openchangeclient.c.covscan  2018-07-19 13:53:41.277450703 +0200
++++ openchange-openchange-2.3-VULCAN/utils/openchangeclient.c  2018-07-19 13:53:41.289450703 +0200
+@@ -629,6 +629,8 @@ static bool set_external_recipients(TALL
+       uint32_t                last;
+       struct SPropValue       SPropValue;
++      memset(&SPropValue, 0, sizeof(struct SPropValue));
++
+       SRowSet->aRow = talloc_realloc(mem_ctx, SRowSet->aRow, struct SRow, SRowSet->cRows + 1);
+       last = SRowSet->cRows;
+       SRowSet->aRow[last].cValues = 0;
+@@ -821,6 +823,8 @@ static enum MAPISTATUS openchangeclient_
+       mapi_object_init(&obj_outbox);
+       mapi_object_init(&obj_message);
++      memset(&SPropValue, 0, sizeof(struct SPropValue));
++
+       if (oclient->pf == true) {
+               retval = openchangeclient_getpfdir(mem_ctx, obj_store, &obj_outbox, oclient->folder);
+               if (retval != MAPI_E_SUCCESS) return retval;
diff --git a/openchange-samba-4.10-macros.patch b/openchange-samba-4.10-macros.patch
new file mode 100644 (file)
index 0000000..0e8e2b9
--- /dev/null
@@ -0,0 +1,159 @@
+diff -up openchange-openchange-2.3-VULCAN/libmapiadmin/mapiadmin_user.c.samba-4.10-macros openchange-openchange-2.3-VULCAN/libmapiadmin/mapiadmin_user.c
+--- openchange-openchange-2.3-VULCAN/libmapiadmin/mapiadmin_user.c.samba-4.10-macros   2019-02-14 15:19:53.317769411 +0100
++++ openchange-openchange-2.3-VULCAN/libmapiadmin/mapiadmin_user.c     2019-02-14 15:19:53.331769410 +0100
+@@ -39,6 +39,8 @@
+ #include <time.h>
++#include "libmapi/libmapi_private.h"
++
+ static ssize_t openchange_sys_read(int fd, void *buf, size_t count)
+ {
+       ssize_t ret;
+@@ -101,7 +103,7 @@ static enum ndr_err_code openchange_ndr_
+               NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->sid_rev_num));
+               NDR_CHECK(ndr_push_int8(ndr, NDR_SCALARS, r->num_auths));
+               NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->id_auth, 6));
+-              if (r->num_auths < 0 || r->num_auths > ARRAY_SIZE(r->sub_auths)) {
++              if (r->num_auths < 0 || r->num_auths > OC_ARRAY_SIZE(r->sub_auths)) {
+                       return ndr_push_error(ndr, NDR_ERR_RANGE, "value out of range");
+               }
+               for (cntr_sub_auths_0 = 0; cntr_sub_auths_0 < r->num_auths; cntr_sub_auths_0++) {
+@@ -659,7 +661,7 @@ again:
+       OC_DEBUG(3, "Setting account password '%s'", mapiadmin_ctx->password);
+-      ZERO_STRUCT(u);
++      OC_ZERO_STRUCT(u);
+       s.in.user_handle = &mapiadmin_ctx->user_ctx->user_handle;
+       s.in.info = &u;
+       s.in.level = 24;
+@@ -687,7 +689,7 @@ again:
+               }
+       }
+-      ZERO_STRUCT(u);
++      OC_ZERO_STRUCT(u);
+       s.in.user_handle = &mapiadmin_ctx->user_ctx->user_handle;
+       s.in.info = &u;
+       s.in.level = 21;
+diff -up openchange-openchange-2.3-VULCAN/libmapi/libmapi_private.h.samba-4.10-macros openchange-openchange-2.3-VULCAN/libmapi/libmapi_private.h
+--- openchange-openchange-2.3-VULCAN/libmapi/libmapi_private.h.samba-4.10-macros       2019-02-14 15:19:53.313769411 +0100
++++ openchange-openchange-2.3-VULCAN/libmapi/libmapi_private.h 2019-02-14 15:19:53.331769410 +0100
+@@ -141,6 +141,11 @@ const char                *libmapi_iface_best_ip(struc
+ bool                  libmapi_iface_is_local(struct interface *, const char *);
+ bool                  libmapi_iface_same_net(const char *, const char *, const char *);
++#define OC_ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
++#define OC_ZERO_STRUCTP(x) do { if ((x) != NULL) memset((char *)(x), 0, sizeof(*(x))); } while(0)
++#define OC_ZERO_STRUCTPN(x) memset((char *)(x), 0, sizeof(*(x)))
++#define OC_ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
++
+ __END_DECLS
+ #undef _PRINTF_ATTRIBUTE
+diff -up openchange-openchange-2.3-VULCAN/libmapi/socket/interface.c.samba-4.10-macros openchange-openchange-2.3-VULCAN/libmapi/socket/interface.c
+--- openchange-openchange-2.3-VULCAN/libmapi/socket/interface.c.samba-4.10-macros      2019-02-14 15:19:53.318769411 +0100
++++ openchange-openchange-2.3-VULCAN/libmapi/socket/interface.c        2019-02-14 15:19:53.331769410 +0100
+@@ -70,7 +70,7 @@ static void add_interface(TALLOC_CTX *me
+       if (iface == NULL) 
+               return;
+       
+-      ZERO_STRUCTPN(iface);
++      OC_ZERO_STRUCTPN(iface);
+       iface->ip = ip;
+       iface->nmask = nmask;
+diff -up openchange-openchange-2.3-VULCAN/mapiproxy/dcesrv_mapiproxy.c.samba-4.10-macros openchange-openchange-2.3-VULCAN/mapiproxy/dcesrv_mapiproxy.c
+--- openchange-openchange-2.3-VULCAN/mapiproxy/dcesrv_mapiproxy.c.samba-4.10-macros    2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/mapiproxy/dcesrv_mapiproxy.c      2019-02-14 15:19:53.331769410 +0100
+@@ -703,7 +703,7 @@ NTSTATUS dcerpc_server_mapiproxy_init(vo
+       NTSTATUS                        ret;
+       struct dcesrv_endpoint_server   ep_server;
+-      ZERO_STRUCT(ep_server);
++      OC_ZERO_STRUCT(ep_server);
+       /* Fill in our name */
+       ep_server.name = "mapiproxy";
+diff -up openchange-openchange-2.3-VULCAN/ndr_mapi.c.samba-4.10-macros openchange-openchange-2.3-VULCAN/ndr_mapi.c
+--- openchange-openchange-2.3-VULCAN/ndr_mapi.c.samba-4.10-macros      2019-02-14 15:19:53.329769410 +0100
++++ openchange-openchange-2.3-VULCAN/ndr_mapi.c        2019-02-14 15:19:53.331769410 +0100
+@@ -921,7 +921,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo
+       TALLOC_CTX *_mem_save_length_0;
+       if (flags & NDR_IN) {
+-              ZERO_STRUCT(r->out);
++              OC_ZERO_STRUCT(r->out);
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.handle);
+@@ -961,7 +961,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo
+               NDR_PULL_ALLOC(ndr, r->out.handle);
+               *r->out.handle = *r->in.handle;
+               NDR_PULL_ALLOC(ndr, r->out.mapi_response);
+-              ZERO_STRUCTP(r->out.mapi_response);
++              OC_ZERO_STRUCTP(r->out.mapi_response);
+               NDR_PULL_ALLOC(ndr, r->out.length);
+               *r->out.length = *r->in.length;
+       }
+@@ -1235,7 +1235,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo
+       TALLOC_CTX      *_mem_save_rgbAuxOut_1;
+       if (flags & NDR_IN) {
+-              ZERO_STRUCT(r->out);
++              OC_ZERO_STRUCT(r->out);
+               NDR_CHECK(ndr_pull_array_size(ndr, &r->in.szUserDN));
+               NDR_CHECK(ndr_pull_array_length(ndr, &r->in.szUserDN));
+@@ -1294,19 +1294,19 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo
+               }
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pcbAuxOut_0, LIBNDR_FLAG_REF_ALLOC);
+               NDR_PULL_ALLOC(ndr, r->out.handle);
+-              ZERO_STRUCTP(r->out.handle);
++              OC_ZERO_STRUCTP(r->out.handle);
+               NDR_PULL_ALLOC(ndr, r->out.pcmsPollsMax);
+-              ZERO_STRUCTP(r->out.pcmsPollsMax);
++              OC_ZERO_STRUCTP(r->out.pcmsPollsMax);
+               NDR_PULL_ALLOC(ndr, r->out.pcRetry);
+-              ZERO_STRUCTP(r->out.pcRetry);
++              OC_ZERO_STRUCTP(r->out.pcRetry);
+               NDR_PULL_ALLOC(ndr, r->out.pcmsRetryDelay);
+-              ZERO_STRUCTP(r->out.pcmsRetryDelay);
++              OC_ZERO_STRUCTP(r->out.pcmsRetryDelay);
+               NDR_PULL_ALLOC(ndr, r->out.picxr);
+-              ZERO_STRUCTP(r->out.picxr);
++              OC_ZERO_STRUCTP(r->out.picxr);
+               NDR_PULL_ALLOC(ndr, r->out.szDNPrefix);
+-              ZERO_STRUCTP(r->out.szDNPrefix);
++              OC_ZERO_STRUCTP(r->out.szDNPrefix);
+               NDR_PULL_ALLOC(ndr, r->out.szDisplayName);
+-              ZERO_STRUCTP(r->out.szDisplayName);
++              OC_ZERO_STRUCTP(r->out.szDisplayName);
+               NDR_PULL_ALLOC(ndr, r->out.pulTimeStamp);
+               *r->out.pulTimeStamp = *r->in.pulTimeStamp;
+               NDR_PULL_ALLOC(ndr, r->out.pcbAuxOut);
+diff -up openchange-openchange-2.3-VULCAN/testsuite/libmapi/mapi_property.c.samba-4.10-macros openchange-openchange-2.3-VULCAN/testsuite/libmapi/mapi_property.c
+--- openchange-openchange-2.3-VULCAN/testsuite/libmapi/mapi_property.c.samba-4.10-macros       2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/testsuite/libmapi/mapi_property.c 2019-02-14 15:19:53.331769410 +0100
+@@ -280,7 +280,7 @@ static void _make_test_srow(TALLOC_CTX *
+ {
+       struct SPropValue prop_val;
+-      ZERO_STRUCT(prop_val);
++      OC_ZERO_STRUCT(prop_val);
+       /* PT_I8 */
+       prop_val.ulPropTag = PR_FID;
+       prop_val.value.d = 0x0123456789ABCDEFul;
+diff -up openchange-openchange-2.3-VULCAN/testsuite/libmapiproxy/openchangedb_logger.c.samba-4.10-macros openchange-openchange-2.3-VULCAN/testsuite/libmapiproxy/openchangedb_logger.c
+--- openchange-openchange-2.3-VULCAN/testsuite/libmapiproxy/openchangedb_logger.c.samba-4.10-macros    2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/testsuite/libmapiproxy/openchangedb_logger.c      2019-02-14 15:19:53.332769410 +0100
+@@ -638,7 +638,7 @@ static void ocdb_logger_setup(void)
+               ck_abort();
+       }
+-      ZERO_STRUCT(functions_called);
++      OC_ZERO_STRUCT(functions_called);
+ }
+ static void ocdb_logger_teardown(void)
index 52581f3b5fa97418b44e65a10df33deb639152a0..e83e891c4c99c21ca007e882624220159092885f 100644 (file)
@@ -12,7 +12,7 @@ Summary:      OpenChange - portable implementation of MS Exchange Server and Exchange
 Summary(pl.UTF-8):     OpenChange - przenośna implementacja serwera oraz protokołów MS Exchange
 Name:          openchange
 Version:       2.3
-Release:       38
+Release:       39
 License:       GPL v3+
 Group:         Libraries
 Source0:       https://github.com/openchange/openchange/archive/%{name}-%{version}-%{cname}.tar.gz
@@ -23,6 +23,8 @@ Patch2:               flex2.6.patch
 Patch3:                samba-4.2.patch
 Patch4:                fix-connection-args.patch
 Patch5:                samba-4.4.patch
+Patch6:                %{name}-covscan.patch
+Patch7:                %{name}-samba-4.10-macros.patch
 URL:           https://github.com/openchange
 BuildRequires: QtCore-devel >= 4.3.0
 BuildRequires: QtGui-devel >= 4.3.0
@@ -47,8 +49,9 @@ BuildRequires:        python-samba >= 4.2.2
 %endif
 BuildRequires: rpmbuild(macros) >= 1.219
 # with DCERCP multiplex and pending call support (upstream 4.1.18+ or 4.2.2+)
-BuildRequires: samba-devel >= 4.2.2
-BuildRequires: samba-pidl >= 4.2.2
+# samba-4.10-macros patch requires samba-pidl 4.10+
+BuildRequires: samba-devel >= 4.10
+BuildRequires: samba-pidl >= 4.10
 BuildRequires: sed >= 4.0
 BuildRequires: subunit-devel
 BuildRequires: talloc-devel
@@ -211,6 +214,8 @@ Wtyczka Nagiosa do sprawdzania usług Exchange/OpenChange.
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
+%patch7 -p1
 
 # no switch for verbose mode, enable manually :/
 %{__sed} -i -e 's/^    @\(\$(\(PIDL\|CC\|CXX\|MOC\)\)/ \1/' Makefile
@@ -251,11 +256,7 @@ cp -p qt/lib/*.h $RPM_BUILD_ROOT%{_includedir}/libqtmapi
 cp -a libqtmapi.so.*.* libqtmapi.so $RPM_BUILD_ROOT%{_libdir}
 
 # tests
-%{__rm} $RPM_BUILD_ROOT%{_bindir}/{check_fasttransfer,openchange-testsuite,test_asyncnotif}
-%if %{without mapiproxy}
-# requires mapiproxy
-%{__rm} $RPM_BUILD_ROOT%{_bindir}/ocnotify
-%endif
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/test_asyncnotif
 %if %{without mapitest}
 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mapitest.1
 %endif
This page took 0.213211 seconds and 4 git commands to generate.