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);