getservbyport_r: fix out-of-bounds buffer read
[musl] / src / locale / catclose.c
index 02cd3e5..54e24dd 100644 (file)
@@ -1,6 +1,14 @@
+#define _BSD_SOURCE
 #include <nl_types.h>
+#include <stdint.h>
+#include <endian.h>
+#include <sys/mman.h>
+
+#define V(p) be32toh(*(uint32_t *)(p))
 
 int catclose (nl_catd catd)
 {
+       char *map = (char *)catd;
+       munmap(map, V(map+8)+20);
        return 0;
 }