projects
/
systemd
/
.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
32ae182
)
ask-password: add extra paranoid overflow check
author
Lennart Poettering
<lennart@poettering.net>
Wed, 20 Mar 2019 09:33:45 +0000
(10:33 +0100)
committer
Lennart Poettering
<lennart@poettering.net>
Wed, 20 Mar 2019 09:48:33 +0000
(10:48 +0100)
src/shared/ask-password-api.c
patch
|
blob
|
history
diff --git
a/src/shared/ask-password-api.c
b/src/shared/ask-password-api.c
index 88335c6d08572ee461c962e8c0073fbf592e56dc..ab0c34692f1ce22b34157e16762f189a18595002 100644
(file)
--- a/
src/shared/ask-password-api.c
+++ b/
src/shared/ask-password-api.c
@@
-77,13
+77,18
@@
static int retrieve_key(key_serial_t serial, char ***ret) {
n = keyctl(KEYCTL_READ, (unsigned long) serial, (unsigned long) p, (unsigned long) m, 0);
if (n < 0)
return -errno;
-
if (n < m)
break;
explicit_bzero_safe(p, n);
- free(p);
+
+ if (m > LONG_MAX / 2) /* overflow check */
+ return -ENOMEM;
m *= 2;
+ if ((long) (size_t) m != m) /* make sure that this still fits if converted to size_t */
+ return -ENOMEM;
+
+ free(p);
}
l = strv_parse_nulstr(p, n);