public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libc/17542] New: conditional jump depends on uninitialised value in svc_getreq_common
@ 2014-11-04 10:37 bhubbard at redhat dot com
  2014-11-04 10:38 ` [Bug libc/17542] " bhubbard at redhat dot com
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: bhubbard at redhat dot com @ 2014-11-04 10:37 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=17542

            Bug ID: 17542
           Summary: conditional jump depends on uninitialised value in
                    svc_getreq_common
           Product: glibc
           Version: 2.21
            Status: NEW
          Severity: normal
          Priority: P2
         Component: libc
          Assignee: unassigned at sourceware dot org
          Reporter: bhubbard at redhat dot com
                CC: drepper.fsp at gmail dot com

Created attachment 7888
  --> https://sourceware.org/bugzilla/attachment.cgi?id=7888&action=edit
Proposed patch to resolve uninitialised xports in xprt_register

If xports is NULL in xprt_register we malloc it but if sock > _rpc_dtablesize()
that memory does not get initialised and may in theory contain any value. Later
we make a conditional jump in svc_getreq_common based on the uninitialised
memory and this caused a general protection fault in rpc.statd on an older
version of glibc but this code has not changed since that version.

Following is the valgrind warning.

==26802== Conditional jump or move depends on uninitialised value(s)
==26802==    at 0x5343A25: svc_getreq_common (in /lib64/libc-2.5.so)
==26802==    by 0x534357B: svc_getreqset (in /lib64/libc-2.5.so)
==26802==    by 0x10DE1F: ??? (in /sbin/rpc.statd)
==26802==    by 0x10D0EF: main (in /sbin/rpc.statd)
==26802==  Uninitialised value was created by a heap allocation
==26802==    at 0x4C2210C: malloc (vg_replace_malloc.c:195)
==26802==    by 0x53438BE: xprt_register (in /lib64/libc-2.5.so)
==26802==    by 0x53450DF: svcudp_bufcreate (in /lib64/libc-2.5.so)
==26802==    by 0x10FE32: ??? (in /sbin/rpc.statd)
==26802==    by 0x10D13E: main (in /sbin/rpc.statd)

I believe the solution here is to change the malloc call to a calloc call and
the attached patch does that. the GPF could not be reproduced with the patched
glibc.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-10-01 11:18 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-04 10:37 [Bug libc/17542] New: conditional jump depends on uninitialised value in svc_getreq_common bhubbard at redhat dot com
2014-11-04 10:38 ` [Bug libc/17542] " bhubbard at redhat dot com
2014-11-04 11:48 ` schwab@linux-m68k.org
2014-11-06 21:53 ` carlos at redhat dot com
2015-03-18  9:28 ` cvs-commit at gcc dot gnu.org
2015-03-18  9:35 ` siddhesh at redhat dot com
2015-10-01 11:18 ` fweimer at redhat dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).