The rmt client in GNU cpio could have a heap overflow when a malicious
remote tape service returns deliberately crafted packets containing more data than requested. Fix this by checking the returned amount of data and bail out when it is more than what we requested. PR: gnu/145010 Submitted by: naddy Reviewed by: imp MFC after: immediately Security: CVE-2010-0624
This commit is contained in:
parent
bb6ba5f6b9
commit
780179e871
@ -570,7 +570,8 @@ rmt_read__ (int handle, char *buffer, size_t length)
|
||||
|
||||
sprintf (command_buffer, "R%lu\n", (unsigned long) length);
|
||||
if (do_command (handle, command_buffer) == -1
|
||||
|| (status = get_status (handle)) == SAFE_READ_ERROR)
|
||||
|| (status = get_status (handle)) == SAFE_READ_ERROR
|
||||
|| status > length)
|
||||
return SAFE_READ_ERROR;
|
||||
|
||||
for (counter = 0; counter < status; counter += rlen, buffer += rlen)
|
||||
|
Loading…
Reference in New Issue
Block a user