File cpionamesize.diff of Package rpm.2971
--- ./lib/cpio.c.orig 2014-12-11 14:51:11.149327450 +0000
+++ ./lib/cpio.c 2014-12-11 14:53:21.493772955 +0000
@@ -296,6 +296,8 @@ int rpmcpioHeaderRead(rpmcpio_t cpio, ch
st->st_rdev = makedev(major, minor);
GET_NUM_FIELD(hdr.namesize, nameSize);
+ if (nameSize <= 0 || nameSize > 4096)
+ return CPIOERR_BAD_HEADER;
*path = xmalloc(nameSize + 1);
read = Fread(*path, nameSize, 1, cpio->fd);