Open
Conversation
Without that, a warning is emitted when compiling libyaml with musl
libc:
api.c: In function 'yaml_strdup':
api.c:66:27: warning: implicit declaration of function 'strdup'; did you mean 'strcmp'? [-Wimplicit-function-declaration]
return (yaml_char_t *)strdup((char *)str);
^~~~~~
strcmp
If the warning is ignored, a program using libyaml starts but crashes
because strdup() is returning garbage:
(gdb) b parser.c:1365
Breakpoint 11 at 0x43ecf4: file parser.c, line 1365.
(gdb) run
(...)
Breakpoint 1, yaml_parser_append_tag_directive (
parser=parser@entry=0x7ffffff5f0, value=...,
allow_duplicates=allow_duplicates@entry=1, mark=...) at parser.c:1365
1365 in parser.c
(gdb) p copy
$1 = {
handle = 0xffffffffb8000fe0 <error: Cannot access memory at address 0xffffffffb8000fe0>,
prefix = 0xffffffffb7f76fe0 <error: Cannot access memory at address 0xffffffffb7f76fe0>}
The solution is to follow strdup()'s manpage and define _GNU_SOURCE
before including string.h.
I guess when using other libc, it fallbacks to another version or maybe
_GNU_SOURCE is set by default.
Fixes: 625fcfe ("Refactor internal and external API.")
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Change-Id: Ida011378a9d4da24735c4d4fdfdfb9d5f80ec970
Author
|
It looks like the error reported by the CI is not due to this modification: |
|
Bumping this. It would be great to get this merged to avoid having to patch musl builds :) |
|
@perlpunk Whenever you have time, do you think you could look at this? Thanks |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Without this PR, a warning is emitted when compiling libyaml with musl libc:
If the warning is ignored (default behaviour), a program using libyaml starts but crashes because
strdup()is returning garbage:The solution is to follow
strdup()'s manpage and define_GNU_SOURCEbefore includingstring.h.I guess when using other libc, it fallbacks to another version or maybe
_GNU_SOURCEis set by default but it certainly uses a validstrdup.Fixes: 625fcfe ("Refactor internal and external API.")