Fix issues found by auditing w32notify code

* src/w32inevt.c (handle_file_notifications): Count the number of
events to be returned.
* src/w32notify.c (send_notifications): Don't copy to the file
notification buffer more than it can hold.  (Bug#22534)
This commit is contained in:
Eli Zaretskii 2016-02-06 18:30:35 +02:00
parent 87ae21858a
commit be1d87492e
2 changed files with 4 additions and 2 deletions

View file

@ -660,6 +660,7 @@ handle_file_notifications (struct input_event *hold_quit)
inev.arg = list3 (make_pointer_integer (notifications_desc),
action, fname);
kbd_buffer_store_event_hold (&inev, hold_quit);
nevents++;
if (!fni->NextEntryOffset)
break;

View file

@ -144,8 +144,9 @@ send_notifications (BYTE *info, DWORD info_size, void *desc,
if (!notification_buffer_in_use)
{
if (info_size)
memcpy (file_notifications, info, info_size);
notifications_size = info_size;
memcpy (file_notifications, info,
min (info_size, sizeof (file_notifications)));
notifications_size = min (info_size, sizeof (file_notifications));
notifications_desc = desc;
/* If PostMessage fails, the message queue is full. If that
happens, the last thing they will worry about is file