diff options
| author | Albert Cervin <albert@acervin.com> | 2023-05-18 23:52:54 +0200 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2023-05-18 23:52:54 +0200 |
| commit | a4d17ddb8e7d23ccca13132f4d88cfc5f5730b76 (patch) | |
| tree | 3797d4ebafc7af128020e37678815c0f8c00072f /src/dged/keyboard.c | |
| parent | 74f4ec2a181a28a3b787cee0dc8e9ea74f50a8f8 (diff) | |
| download | dged-a4d17ddb8e7d23ccca13132f4d88cfc5f5730b76.tar.gz dged-a4d17ddb8e7d23ccca13132f4d88cfc5f5730b76.tar.xz dged-a4d17ddb8e7d23ccca13132f4d88cfc5f5730b76.zip | |
Fix too small index in keyboard code
The buffer _can_ be bigger than 255
Diffstat (limited to 'src/dged/keyboard.c')
| -rw-r--r-- | src/dged/keyboard.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/dged/keyboard.c b/src/dged/keyboard.c index 4b142ee..63b7b6e 100644 --- a/src/dged/keyboard.c +++ b/src/dged/keyboard.c @@ -120,8 +120,15 @@ struct keyboard_update keyboard_update(struct keyboard *kbd, nbytes += nread; if (nbytes > 0) { - upd.nbytes = nbytes; upd.raw = frame_alloc(nbytes); + + if (upd.raw == NULL) { + fprintf(stderr, "failed to allocate buffer of %d bytes\n", nbytes); + free(buf); + return upd; + } + + upd.nbytes = nbytes; memcpy(upd.raw, buf, nbytes); upd.keys = frame_alloc(sizeof(struct key) * nbytes); memset(upd.keys, 0, sizeof(struct key) * nbytes); |
