Bug 1672231 - Samba's ZERO_STRUCT() uses undefined C11 function memset_s()
Summary: Samba's ZERO_STRUCT() uses undefined C11 function memset_s()
Alias: None
Product: Fedora
Classification: Fedora
Component: samba
Version: rawhide
Hardware: Unspecified
OS: Unspecified
Target Milestone: ---
Assignee: Guenther Deschner
QA Contact: Fedora Extras Quality Assurance
: 1671507 1673312 1675576 (view as bug list)
Depends On:
Blocks: F30FTBFS
TreeView+ depends on / blocked
Reported: 2019-02-04 10:33 UTC by Milan Crha
Modified: 2019-02-15 10:29 UTC (History)
13 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2019-02-15 10:29:25 UTC
Type: Bug

Attachments (Terms of Use)

System ID Priority Status Summary Last Updated
Samba Project 13778 None None None 2019-03-10 20:39:26 UTC

Description Milan Crha 2019-02-04 10:33:42 UTC
The mass rebuild of OpenChange [1] shows a failure of the build due to reference
to memset_s() in macros provided by samba. Part of the error message is here [3].

Am I able to do anything about it in the openchange package? Eventually, am I supposed to do anything with it at all? I mean, it feels like a regression, but I do not know whether the memset_s() had been used in those macros before. If the memset_s() requires any special defines being defined, then those should be added by samba headers. 

I tried to move ndr.h include as the first include in the openchange's ndr_mapi.c file, but it didn't help at all [2]. My idea was that maybe something includes string.h before samba has a chance to influence it, but it was not it.

[1] https://koji.fedoraproject.org/koji/taskinfo?taskID=32428399
[2] https://koji.fedoraproject.org/koji/taskinfo?taskID=32531263
[3] Part of the build log from [1]:

Compiling ndr_mapi.c with -fPIC
BUILDSTDERR: In file included from /usr/include/samba-4.0/ndr.h:29,
BUILDSTDERR:                  from /usr/include/samba-4.0/dcerpc.h:32,
BUILDSTDERR:                  from libmapi/libmapi.h:45,
BUILDSTDERR:                  from ndr_mapi.c:22:
BUILDSTDERR: ndr_mapi.c: In function 'ndr_pull_EcDoRpc':
BUILDSTDERR: /usr/include/samba-4.0/util/memory.h:54:24: warning: implicit declaration of function 'memset_s'; did you mean 'memset'? [-Wimplicit-function-declaration]
BUILDSTDERR:    54 | #define ZERO_STRUCT(x) memset_s((char *)&(x), sizeof(x), 0, sizeof(x))
BUILDSTDERR:       |                        ^~~~~~~~
BUILDSTDERR: ndr_mapi.c:924:3: note: in expansion of macro 'ZERO_STRUCT'
BUILDSTDERR:   924 |   ZERO_STRUCT(r->out);
BUILDSTDERR:       |   ^~~~~~~~~~~
BUILDSTDERR: /usr/bin/ld: libmapi-openchange.so.2.3: undefined reference to `memset_s'
BUILDSTDERR: collect2: error: ld returned 1 exit status
BUILDSTDERR: make: *** [Makefile:450: bin/libmapixx-test] Error 1
BUILDSTDERR: error: Bad exit status from /var/tmp/rpm-tmp.aoXFCs (%build)

Comment 1 Andreas Schneider 2019-02-06 14:47:51 UTC
Could you please open an upsteam bug too?

Comment 2 Milan Crha 2019-02-06 14:58:27 UTC
Here you are:

Comment 3 Christian Heimes 2019-02-07 11:11:08 UTC
*** Bug 1673312 has been marked as a duplicate of this bug. ***

Comment 4 Andreas Schneider 2019-02-07 15:09:36 UTC
Patches at: https://gitlab.com/samba-team/samba/merge_requests/238

Comment 5 Andreas Schneider 2019-02-07 15:10:45 UTC
Inside of Samba memset_s() is available as we offer an implementation for it. However it is not available publicly.

Comment 6 Milan Crha 2019-02-12 08:36:04 UTC
*** Bug 1675576 has been marked as a duplicate of this bug. ***

Comment 7 Andreas Schneider 2019-02-15 10:28:27 UTC
*** Bug 1671507 has been marked as a duplicate of this bug. ***

Comment 8 Andreas Schneider 2019-02-15 10:29:25 UTC
This has been fixed in rawhide.

Note You need to log in before you can comment on or make changes to this bug.