diff options
Diffstat (limited to 'meta/recipes-extended/libtirpc/libtirpc-0.2.3/libtirpc-0.2.1-fortify.patch')
-rw-r--r-- | meta/recipes-extended/libtirpc/libtirpc-0.2.3/libtirpc-0.2.1-fortify.patch | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/meta/recipes-extended/libtirpc/libtirpc-0.2.3/libtirpc-0.2.1-fortify.patch b/meta/recipes-extended/libtirpc/libtirpc-0.2.3/libtirpc-0.2.1-fortify.patch new file mode 100644 index 0000000000..4a785d344a --- /dev/null +++ b/meta/recipes-extended/libtirpc/libtirpc-0.2.3/libtirpc-0.2.1-fortify.patch @@ -0,0 +1,26 @@ +Fix a possible overflow (reported by _FORTIFY_SOURCE=2) + +Ported from Gentoo + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: libtirpc-0.2.1/src/getrpcport.c +=================================================================== +--- libtirpc-0.2.1.orig/src/getrpcport.c ++++ libtirpc-0.2.1/src/getrpcport.c +@@ -54,11 +54,11 @@ getrpcport(host, prognum, versnum, proto + + if ((hp = gethostbyname(host)) == NULL) + return (0); ++ if (hp->h_length != sizeof(addr.sin_addr.s_addr)) ++ return (0); + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_port = 0; +- if (hp->h_length > sizeof(addr)) +- hp->h_length = sizeof(addr); + memcpy(&addr.sin_addr.s_addr, hp->h_addr, (size_t)hp->h_length); + /* Inconsistent interfaces need casts! :-( */ + return (pmap_getport(&addr, (u_long)prognum, (u_long)versnum, |