libcap/CVE-2023-2603.patch
2024-02-10 20:34:43 +08:00

26 lines
843 B
Diff

diff -Nurp libcap-2.63-orig/libcap/cap_alloc.c libcap-2.63/libcap/cap_alloc.c
--- libcap-2.63-orig/libcap/cap_alloc.c 2022-01-24 01:30:38.000000000 +0100
+++ libcap-2.63/libcap/cap_alloc.c 2023-05-16 16:08:54.870513495 +0200
@@ -105,15 +105,17 @@ char *_libcap_strdup(const char *old)
errno = EINVAL;
return NULL;
}
- len = strlen(old) + 1 + 2*sizeof(__u32);
- if (len < sizeof(struct _cap_alloc_s)) {
- len = sizeof(struct _cap_alloc_s);
- }
- if ((len & 0xffffffff) != len) {
+
+ len = strlen(old);
+ if ((len & 0x3fffffff) != len) {
_cap_debug("len is too long for libcap to manage");
errno = EINVAL;
return NULL;
}
+ len += 1 + 2*sizeof(__u32);
+ if (len < sizeof(struct _cap_alloc_s)) {
+ len = sizeof(struct _cap_alloc_s);
+ }
raw_data = calloc(1, len);
if (raw_data == NULL) {