diff options
| author | Eli Zaretskii | 2018-02-20 05:58:58 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2018-02-20 05:58:58 +0200 |
| commit | 3d42272754db914d4f2dbbcfba5ce6776a7b232b (patch) | |
| tree | 70d74f9adfbf9614c1f66f07c0c7f66ecfbe5991 | |
| parent | 071a0a571243f9498e0e58e5fe938a7b892a22db (diff) | |
| download | emacs-3d42272754db914d4f2dbbcfba5ce6776a7b232b.tar.gz emacs-3d42272754db914d4f2dbbcfba5ce6776a7b232b.zip | |
Add assertion to guard 'read' calls on MS-Windows
* src/sysdep.c (emacs_intr_read): Assert that NBYTES never
overflows a 32-bit int.
| -rw-r--r-- | src/sysdep.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/sysdep.c b/src/sysdep.c index bc34d8dc059..08db376b261 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -2566,6 +2566,14 @@ emacs_intr_read (int fd, void *buf, ptrdiff_t nbyte, bool interruptible) | |||
| 2566 | 2566 | ||
| 2567 | /* There is no need to check against MAX_RW_COUNT, since no caller ever | 2567 | /* There is no need to check against MAX_RW_COUNT, since no caller ever |
| 2568 | passes a size that large to emacs_read. */ | 2568 | passes a size that large to emacs_read. */ |
| 2569 | #ifdef WINDOWSNT | ||
| 2570 | /* On MS-Windows, 'read's last argument is declared as 'unsigned | ||
| 2571 | int', and the return value's type (see 'sys_read') is 'int'. | ||
| 2572 | This might cause trouble, especially in 64-bit builds, if the | ||
| 2573 | above comment ever becomes incorrect. The following assertion | ||
| 2574 | should make us more future-proof. */ | ||
| 2575 | eassert (nbyte <= INT_MAX); | ||
| 2576 | #endif | ||
| 2569 | do | 2577 | do |
| 2570 | { | 2578 | { |
| 2571 | if (interruptible) | 2579 | if (interruptible) |