@@ -713,7 +713,7 @@ ec_error_t zs_openentry(GUID hsession, BINARY entryid,
713713{
714714 BOOL b_private;
715715 int account_id;
716- char essdn[ 1024 ] ;
716+ std::string essdn;
717717 uint64_t folder_id;
718718 uint64_t message_id;
719719 uint32_t address_type;
@@ -724,12 +724,10 @@ ec_error_t zs_openentry(GUID hsession, BINARY entryid,
724724 return ecError;
725725 if (strncmp (entryid.pc , " /exmdb=" , 7 ) == 0 ) {
726726 /* Stupid GUID-less entryid from submit.php */
727- gx_strlcpy (essdn, entryid.pc , sizeof (essdn));
728- return zs_openentry_emsab (hsession, entryid, flags, essdn,
727+ return zs_openentry_emsab (hsession, entryid, flags, entryid.pc ,
729728 DT_REMOTE_MAILUSER, pmapi_type, phobject);
730- } else if (common_util_parse_addressbook_entryid (entryid, &address_type,
731- essdn, std::size (essdn))) {
732- return zs_openentry_emsab (hsession, entryid, flags, essdn,
729+ } else if (cu_parse_abkeid (entryid, &address_type, essdn)) {
730+ return zs_openentry_emsab (hsession, entryid, flags, essdn.c_str (),
733731 address_type, pmapi_type, phobject);
734732 } else if (entryid.cb >= 20 && *reinterpret_cast <const FLATUID *>(&entryid.pb [4 ]) == muidZCSAB) {
735733 return zs_openentry_zcsab (hsession, entryid, flags,
@@ -828,7 +826,6 @@ ec_error_t zs_openstoreentry(GUID hsession, uint32_t hobject, BINARY entryid,
828826 uint16_t type;
829827 BOOL b_private;
830828 int account_id;
831- char essdn[1024 ];
832829 uint64_t fid_val;
833830 uint8_t loc_type;
834831 zs_objtype mapi_type;
@@ -851,6 +848,9 @@ ec_error_t zs_openstoreentry(GUID hsession, uint32_t hobject, BINARY entryid,
851848 PRIVATE_FID_ROOT : PUBLIC_FID_ROOT);
852849 message_id = 0 ;
853850 } else {
851+ std::string essdn_s;
852+ const char *essdn = essdn_s.c_str ();
853+
854854 type = common_util_get_messaging_entryid_type (entryid);
855855 switch (type) {
856856 case EITLT_PRIVATE_FOLDER:
@@ -869,12 +869,11 @@ ec_error_t zs_openstoreentry(GUID hsession, uint32_t hobject, BINARY entryid,
869869 break ;
870870 }
871871 if (strncmp (entryid.pc , " /exmdb=" , 7 ) == 0 ) {
872- gx_strlcpy (essdn, entryid.pc , sizeof (essdn));
873- } else if (common_util_parse_addressbook_entryid (entryid,
874- &address_type, essdn, std::size (essdn)) &&
875- strncmp (essdn, " /exmdb=" , 7 ) == 0 &&
872+ essdn = entryid.pc ;
873+ } else if (cu_parse_abkeid (entryid, &address_type, essdn_s) &&
874+ strncmp (essdn_s.c_str (), " /exmdb=" , 7 ) == 0 &&
876875 address_type == DT_REMOTE_MAILUSER) {
877- /* do nothing */
876+ essdn = essdn_s. c_str ();
878877 } else {
879878 return ecInvalidParam;
880879 }
@@ -1049,13 +1048,13 @@ static ec_error_t zs_openab_emsab(USER_INFO_REF &&pinfo, BINARY entryid,
10491048 int base_id, zs_objtype *pmapi_type, uint32_t *phobject)
10501049{
10511050 int user_id, domain_id;
1052- char essdn[ 1024 ] ;
1051+ std::string essdn_s ;
10531052 uint32_t address_type;
10541053
1055- if (!common_util_parse_addressbook_entryid (entryid, &address_type,
1056- essdn, std::size (essdn)))
1054+ if (!cu_parse_abkeid (entryid, &address_type, essdn_s))
10571055 return ecInvalidParam;
10581056
1057+ auto essdn = essdn_s.data ();
10591058 if (address_type == DT_CONTAINER) {
10601059 CONTAINER_ID container_id;
10611060 uint8_t type;
0 commit comments