From: Jakub Bogusz Date: Wed, 10 Apr 2019 19:03:14 +0000 (+0200) Subject: - added covscan,samba-4.10-macros patches from Fedora X-Git-Tag: auto/th/openchange-2.3-39 X-Git-Url: http://git.pld-linux.org/?p=packages%2Fopenchange.git;a=commitdiff_plain;h=f28b8ba49a90595347fb6a401e7dfb87b857e600 - added covscan,samba-4.10-macros patches from Fedora - updated disable-mapiproxy patch (basing on Fedora disable-server-tools-build patch) - release 39 (for samba 4.10.2) --- diff --git a/disable-mapiproxy.patch b/disable-mapiproxy.patch index 9435bfd..8cc2ec9 100644 --- a/disable-mapiproxy.patch +++ b/disable-mapiproxy.patch @@ -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 index 0000000..69b2890 --- /dev/null +++ b/openchange-covscan.patch @@ -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 index 0000000..0e8e2b9 --- /dev/null +++ b/openchange-samba-4.10-macros.patch @@ -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 + ++#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) diff --git a/openchange.spec b/openchange.spec index 52581f3..e83e891 100644 --- a/openchange.spec +++ b/openchange.spec @@ -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