Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler.
Number of rules (primarily dangerous function names) in C/C++ ruleset: 223
Examining data/pdfcrack-0.19/md5.c
Examining data/pdfcrack-0.19/pdfparser.h
Examining data/pdfcrack-0.19/sha256.h
Examining data/pdfcrack-0.19/passwords.c
Examining data/pdfcrack-0.19/md5.h
Examining data/pdfcrack-0.19/benchmark.h
Examining data/pdfcrack-0.19/rc4.h
Examining data/pdfcrack-0.19/pdfcrack.c
Examining data/pdfcrack-0.19/benchmark.c
Examining data/pdfcrack-0.19/sha256.c
Examining data/pdfcrack-0.19/pdfparser.c
Examining data/pdfcrack-0.19/pdfreader.c
Examining data/pdfcrack-0.19/main.c
Examining data/pdfcrack-0.19/common.h
Examining data/pdfcrack-0.19/common.c
Examining data/pdfcrack-0.19/passwords.h
Examining data/pdfcrack-0.19/rc4.c
Examining data/pdfcrack-0.19/pdfcrack.h

FINAL RESULTS:

data/pdfcrack-0.19/passwords.c:194:6:  [4] (buffer) fscanf:
  The scanf() family's %s operation, without a limit specification, permits
  buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a
  different input function. If the scanf format is influenceable by an
  attacker, it's exploitable.
  if(fscanf(file, string_PM, &pm) < 1)
data/pdfcrack-0.19/passwords.c:197:8:  [4] (buffer) fscanf:
  The scanf() family's %s operation, without a limit specification, permits
  buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a
  different input function. If the scanf format is influenceable by an
  attacker, it's exploitable.
    if(fscanf(file, string_MPCLC, &maxPasswordLen, &charsetLen) < 2)
data/pdfcrack-0.19/passwords.c:259:3:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
  fprintf(file, string_PM, pwMethod);
data/pdfcrack-0.19/passwords.c:261:5:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
    fprintf(file, string_MPCLC, maxPasswordLen, charsetLen);
data/pdfcrack-0.19/pdfcrack.c:712:6:  [4] (buffer) fscanf:
  The scanf() family's %s operation, without a limit specification, permits
  buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a
  different input function. If the scanf format is influenceable by an
  attacker, it's exploitable.
  if(fscanf(file,string_PRVPL, &e->version_major, &e->version_minor,
data/pdfcrack-0.19/pdfcrack.c:736:6:  [4] (buffer) fscanf:
  The scanf() family's %s operation, without a limit specification, permits
  buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a
  different input function. If the scanf format is influenceable by an
  attacker, it's exploitable.
  if(fscanf(file,string_FILTER, &len) < 1)
data/pdfcrack-0.19/pdfcrack.c:780:6:  [4] (buffer) fscanf:
  The scanf() family's %s operation, without a limit specification, permits
  buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a
  different input function. If the scanf format is influenceable by an
  attacker, it's exploitable.
  if(fscanf(file, string_UUPWP, &tmp, &tmp2, &tmp3) < 3)
data/pdfcrack-0.19/pdfcrack.c:812:3:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
  fprintf(file, string_PRVPL,
data/pdfcrack-0.19/pdfcrack.c:818:3:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
  fprintf(file, string_FILTER, strlen(encdata->s_handler));
data/pdfcrack-0.19/pdfcrack.c:831:3:  [4] (format) fprintf:
  If format strings can be influenced by an attacker, they can be exploited
  (CWE-134). Use a constant for the format specification.
  fprintf(file, string_UUPWP, (int)workWithUser,
data/pdfcrack-0.19/main.c:117:9:  [3] (buffer) getopt_long:
  Some older implementations do not protect against internal buffer overflows
  (CWE-120, CWE-20). Check implementation on installation, or limit the size
  of all string inputs.
    c = getopt_long(argc, argv, "bc:f:l:m:n:op:qsuw:v",
data/pdfcrack-0.19/main.c:52:14:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
  if((file = fopen(CRASHFILE, "w")) == 0) {
data/pdfcrack-0.19/main.c:150:15:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
      maxpw = atoi(optarg);
data/pdfcrack-0.19/main.c:154:15:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
      minpw = atoi(optarg);
data/pdfcrack-0.19/main.c:228:14:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
  if((file = fopen(inputfile, "rb")) == 0) {
data/pdfcrack-0.19/main.c:282:20:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
    if((wordlist = fopen(wordlistfile, "r")) == 0) {
data/pdfcrack-0.19/pdfcrack.c:75:3:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
  char str[33];
data/pdfcrack-0.19/pdfcrack.c:81:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(str,currPW,currPWLen);
data/pdfcrack-0.19/pdfcrack.c:118:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(encKeyWorkSpace, pad, 32);
data/pdfcrack-0.19/pdfcrack.c:121:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(encKeyWorkSpace + 32, ownerkey, 32);
data/pdfcrack-0.19/pdfcrack.c:130:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(encKeyWorkSpace + 68, fileID, fileIDLen);
data/pdfcrack-0.19/pdfcrack.c:199:3:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
  char str[33];
data/pdfcrack-0.19/pdfcrack.c:203:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(str,currPW,currPWLen);
data/pdfcrack-0.19/pdfcrack.c:221:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(str, password_user, pad_start);
data/pdfcrack-0.19/pdfcrack.c:263:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(test, encdata->u_string, PARTIAL_TEST_SIZE);
data/pdfcrack-0.19/pdfcrack.c:270:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(test, encdata->u_string, length);
data/pdfcrack-0.19/pdfcrack.c:283:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(currPW + currPWLen, pad, 32-currPWLen);	\
data/pdfcrack-0.19/pdfcrack.c:304:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(password_user, encKeyWorkSpace, 32);
data/pdfcrack-0.19/pdfcrack.c:331:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(test, encdata->o_string, 32);
data/pdfcrack-0.19/pdfcrack.c:333:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(encKeyWorkSpace, test, 32);
data/pdfcrack-0.19/pdfcrack.c:336:9:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
        memcpy(password_user, encKeyWorkSpace, 32);
data/pdfcrack-0.19/pdfcrack.c:386:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(test, encdata->o_string, PARTIAL_TEST_SIZE);
data/pdfcrack-0.19/pdfcrack.c:391:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(test, encdata->o_string, 32);
data/pdfcrack-0.19/pdfcrack.c:419:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(test, encdata->u_string, PARTIAL_TEST_SIZE);
data/pdfcrack-0.19/pdfcrack.c:426:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(test, encdata->u_string, length);
data/pdfcrack-0.19/pdfcrack.c:474:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(currPW + currPWLen, encdata->u_string+32, 8);
data/pdfcrack-0.19/pdfcrack.c:502:2:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
	memcpy(currPW + currPWLen, encdata->o_string+32, 8);
data/pdfcrack-0.19/pdfcrack.c:503:9:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
       	memcpy(currPW + currPWLen+8, encdata->u_string, 48);
data/pdfcrack-0.19/pdfcrack.c:531:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(currPW, encdata->u_string+32, 8);
data/pdfcrack-0.19/pdfcrack.c:535:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(currPW, encdata->o_string+32, 8);
data/pdfcrack-0.19/pdfcrack.c:536:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(currPW + 8, encdata->u_string, 48);
data/pdfcrack-0.19/pdfcrack.c:541:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(cpw, pad, 32);
data/pdfcrack-0.19/pdfcrack.c:643:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(password_user, upw, upwlen);
data/pdfcrack-0.19/pdfcrack.c:644:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(password_user+upwlen, pad, 32-upwlen);
data/pdfcrack-0.19/pdfcrack.c:645:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(encKeyWorkSpace, password_user, 32);
data/pdfcrack-0.19/pdfcrack.c:650:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(encKeyWorkSpace, password_user, 32);
data/pdfcrack-0.19/pdfcrack.c:656:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(encKeyWorkSpace, pad, 32);
data/pdfcrack-0.19/pdfcrack.c:659:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(password_user, pad, 32);
data/pdfcrack-0.19/pdfcrack.c:665:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(buf, pad, 32);
data/pdfcrack-0.19/pdfcrack.c:666:5:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    memcpy(buf + 32, e->fileID, e->fileIDLen);
data/pdfcrack-0.19/pdfcrack.c:674:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(encKeyWorkSpace, pad, 32);
data/pdfcrack-0.19/pdfcrack.c:677:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(password_user, pad, 32);
data/pdfcrack-0.19/pdfparser.c:127:3:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
  char buff[BUFFSIZE];
data/pdfcrack-0.19/pdfparser.c:144:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(ret, buff, i);
data/pdfcrack-0.19/pdfparser.c:300:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(ret->content, tmp, l);
data/pdfcrack-0.19/pdfreader.c:39:14:  [2] (misc) fopen:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
  if((file = fopen(argv[1], "r")) == 0) {
data/pdfcrack-0.19/rc4.c:68:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(state, initial_state, 256);
data/pdfcrack-0.19/rc4.c:117:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(state, initial_state, 256);
data/pdfcrack-0.19/rc4.c:155:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(state, initial_state, 256);
data/pdfcrack-0.19/rc4.c:201:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(state, initial_state, 256);
data/pdfcrack-0.19/sha256.c:162:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(blk, msg + i, blkLen);
data/pdfcrack-0.19/sha256.c:211:3:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  memcpy(blk, msg, blkLen);
data/pdfcrack-0.19/passwords.c:51:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ch = getc(wordList);
data/pdfcrack-0.19/passwords.c:54:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(wordList);
data/pdfcrack-0.19/passwords.c:60:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(wordList);
data/pdfcrack-0.19/passwords.c:63:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(wordList);
data/pdfcrack-0.19/passwords.c:138:18:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
    charsetLen = strlen((const char*)charset);
data/pdfcrack-0.19/passwords.c:206:19:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      string[i] = getc(file);
data/pdfcrack-0.19/passwords.c:211:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    if(getc(file) != '\n')
data/pdfcrack-0.19/passwords.c:232:19:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      string[i] = getc(file);
data/pdfcrack-0.19/passwords.c:236:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    if(getc(file) != '\n') {
data/pdfcrack-0.19/passwords.c:267:40:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
    fprintf(file, "Wordlist(%zu): %s", strlen(wordListName), wordListName);
data/pdfcrack-0.19/pdfcrack.c:640:14:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
    upwlen = strlen((const char*)upw);
data/pdfcrack-0.19/pdfcrack.c:746:23:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    e->s_handler[i] = getc(file);
data/pdfcrack-0.19/pdfcrack.c:818:32:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
  fprintf(file, string_FILTER, strlen(encdata->s_handler));
data/pdfcrack-0.19/pdfparser.c:74:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:77:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:81:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:92:30:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  return parseIntWithC(file, getc(file));
data/pdfcrack-0.19/pdfparser.c:100:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:110:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:114:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:116:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:135:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:139:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:173:14:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
  for(i=0; i<strlen(str); ++i)
data/pdfcrack-0.19/pdfparser.c:174:14:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    if((ch = getc(file)) != str[i])
data/pdfcrack-0.19/pdfparser.c:186:6:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  if(getc(file) == '%' && getc(file) == 'P' && getc(file) == 'D' 
data/pdfcrack-0.19/pdfparser.c:186:27:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  if(getc(file) == '%' && getc(file) == 'P' && getc(file) == 'D' 
data/pdfcrack-0.19/pdfparser.c:186:48:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  if(getc(file) == '%' && getc(file) == 'P' && getc(file) == 'D' 
data/pdfcrack-0.19/pdfparser.c:187:9:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
     && getc(file) == 'F' && getc(file) == '-') {
data/pdfcrack-0.19/pdfparser.c:187:30:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
     && getc(file) == 'F' && getc(file) == '-') {
data/pdfcrack-0.19/pdfparser.c:189:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    if(getc(file) == '.')
data/pdfcrack-0.19/pdfparser.c:316:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:329:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:343:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:362:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:366:23:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      if(ch == '<' && getc(file) == '<') {
data/pdfcrack-0.19/pdfparser.c:373:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:376:11:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:382:11:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:390:11:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:392:9:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	  ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:395:11:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:408:25:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	  else if(ch == 'I' && getc(file) == 'D') {
data/pdfcrack-0.19/pdfparser.c:411:13:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:428:11:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:431:11:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:442:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:446:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:479:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:485:18:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	if(ch == '<' && getc(file) == '<') {
data/pdfcrack-0.19/pdfparser.c:493:9:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	  ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:496:13:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:501:13:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:503:11:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:506:13:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:519:34:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	    else if(!id && ch == 'I' && getc(file) == 'D') {
data/pdfcrack-0.19/pdfparser.c:522:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
		ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:537:13:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:540:13:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:552:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:556:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:594:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:597:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:605:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:611:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:613:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:629:12:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:668:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:689:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:697:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:706:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:727:7:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:809:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:816:20:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	  if(ch == 'o' && getc(file) == 'b' && getc(file) == 'j' &&
data/pdfcrack-0.19/pdfparser.c:816:41:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	  if(ch == 'o' && getc(file) == 'b' && getc(file) == 'j' &&
data/pdfcrack-0.19/pdfparser.c:817:48:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	     parseWhiteSpaceOrComment(file) == '<' && getc(file) == '<') {
data/pdfcrack-0.19/pdfparser.c:823:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:829:8:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ch = getc(file);
data/pdfcrack-0.19/pdfparser.c:837:20:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	  if(ch == 'o' && getc(file) == 'b' && getc(file) == 'j' &&
data/pdfcrack-0.19/pdfparser.c:837:41:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	  if(ch == 'o' && getc(file) == 'b' && getc(file) == 'j' &&
data/pdfcrack-0.19/pdfparser.c:838:48:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
	     parseWhiteSpaceOrComment(file) == '<' && getc(file) == '<') {
data/pdfcrack-0.19/pdfparser.c:844:10:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ch = getc(file);

ANALYSIS SUMMARY:

Hits = 144
Lines analyzed = 3986 in approximately 0.13 seconds (31344 lines/second)
Physical Source Lines of Code (SLOC) = 2838
Hits@level = [0]  85 [1]  82 [2]  51 [3]   1 [4]  10 [5]   0
Hits@level+ = [0+] 229 [1+] 144 [2+]  62 [3+]  11 [4+]  10 [5+]   0
Hits/KSLOC@level+ = [0+] 80.6906 [1+] 50.74 [2+] 21.8464 [3+] 3.87597 [4+] 3.52361 [5+]   0
Dot directories skipped = 1 (--followdotdir overrides)
Minimum risk level = 1
Not every hit is necessarily a security vulnerability.
There may be other security vulnerabilities; review your code!
See 'Secure Programming HOWTO'
(https://dwheeler.com/secure-programs) for more information.