diff options
author | Martin Storsjö <martin@martin.st> | 2015-10-28 22:19:12 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2015-10-30 10:03:58 +0200 |
commit | 00b62968d079e63bf22028f253ac297292436ebe (patch) | |
tree | f345972cb9c05b94ec6acea312364cd2bedb7abf /libavformat | |
parent | 567ca142952c5be57e52c149c815dfe5d6ac6d41 (diff) | |
download | ffmpeg-00b62968d079e63bf22028f253ac297292436ebe.tar.gz |
os_support: Don't try to return the service name as a string in getnameinfo
Some systems may be lacking getservbyport; the previous ifdef wasn't
quite enough since it still assumed that struct servent was defined,
as pointed out by Clément Gregoire.
Simply remove the possibility to return non-numeric services in
getnameinfo; no caller of getnameinfo within libavformat
currently try to use getnameinfo for retrieving the port number without
NI_NUMERICSERV, and falling back on getservbyport may be non-threadsafe.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/os_support.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/libavformat/os_support.c b/libavformat/os_support.c index 650baea0d0..e9b1f88fb8 100644 --- a/libavformat/os_support.c +++ b/libavformat/os_support.c @@ -204,16 +204,9 @@ int ff_getnameinfo(const struct sockaddr *sa, int salen, } if (serv && servlen > 0) { - struct servent *ent = NULL; -#if HAVE_GETSERVBYPORT if (!(flags & NI_NUMERICSERV)) - ent = getservbyport(sin->sin_port, flags & NI_DGRAM ? "udp" : "tcp"); -#endif /* HAVE_GETSERVBYPORT */ - - if (ent) - snprintf(serv, servlen, "%s", ent->s_name); - else - snprintf(serv, servlen, "%d", ntohs(sin->sin_port)); + return EAI_FAIL; + snprintf(serv, servlen, "%d", ntohs(sin->sin_port)); } return 0; |