in this case, len is negative so the program does not begin to extract data in the while loop.
cdrkit-1.1.11/genisoimage/diag/isoinfo.c
631 extract_file(struct iso_directory_record *idr) 632 { 633 int extent, len, tlen; 634 unsigned char buff[2048]; 635 636 #if defined(__CYGWIN32__) || defined(__CYGWIN__) || defined(__EMX__) || defined(__DJGPP__) 637 setmode(fileno(stdout), O_BINARY); 638 #endif 639 640 extent = isonum_733((unsigned char *)idr->extent); 641 len = isonum_733((unsigned char *)idr->size); 642 643 while (len > 0) { 644 #ifdef USE_SCG 645 readsecs(extent - sector_offset, buff, ISO_BLOCKS(sizeof (buff))); 646 tlen = (len > sizeof (buff) ? sizeof (buff) : len); 647 #else 648 lseek(fileno(infile), ((off_t)(extent - sector_offset)) << 11, SEEK_SET); 649 tlen = (len > sizeof (buff) ? sizeof (buff) : len); 650 read(fileno(infile), buff, tlen); 651 #endif 652 len -= tlen; 653 extent++; 654 write(STDOUT_FILENO, buff, tlen); /* FIXME: check return value */ 655 } 656 }
(gdb) print len $1 = -1565868032
in this case,
len is negative so the program does not begin to extract data in the while loop.
cdrkit- 1.1.11/ genisoimage/ diag/isoinfo. c
631 extract_file(struct iso_directory_ record *idr) __CYGWIN32_ _) || defined(__CYGWIN__) || defined(__EMX__) || defined(__DJGPP__) fileno( stdout) , O_BINARY); 733((unsigned char *)idr->extent); 733((unsigned char *)idr->size); infile) , ((off_t)(extent - sector_offset)) << 11, SEEK_SET); infile) , buff, tlen); FILENO, buff, tlen); /* FIXME: check return value */
632 {
633 int extent, len, tlen;
634 unsigned char buff[2048];
635
636 #if defined(
637 setmode(
638 #endif
639
640 extent = isonum_
641 len = isonum_
642
643 while (len > 0) {
644 #ifdef USE_SCG
645 readsecs(extent - sector_offset, buff, ISO_BLOCKS(sizeof (buff)));
646 tlen = (len > sizeof (buff) ? sizeof (buff) : len);
647 #else
648 lseek(fileno(
649 tlen = (len > sizeof (buff) ? sizeof (buff) : len);
650 read(fileno(
651 #endif
652 len -= tlen;
653 extent++;
654 write(STDOUT_
655 }
656 }
(gdb) print len
$1 = -1565868032