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/grpn-1.4.1/help.h
Examining data/grpn-1.4.1/run_cmd.c
Examining data/grpn-1.4.1/options.h
Examining data/grpn-1.4.1/license.h
Examining data/grpn-1.4.1/stack.h
Examining data/grpn-1.4.1/setup_menu.c
Examining data/grpn-1.4.1/help.c
Examining data/grpn-1.4.1/process_input.c
Examining data/grpn-1.4.1/matrix.c
Examining data/grpn-1.4.1/real.c
Examining data/grpn-1.4.1/menu.h
Examining data/grpn-1.4.1/funcs.c
Examining data/grpn-1.4.1/main.c
Examining data/grpn-1.4.1/lcd.h
Examining data/grpn-1.4.1/real.h
Examining data/grpn-1.4.1/buttons.h
Examining data/grpn-1.4.1/version.h
Examining data/grpn-1.4.1/undo.c
Examining data/grpn-1.4.1/options.c
Examining data/grpn-1.4.1/typedefs.h
Examining data/grpn-1.4.1/complex.c
Examining data/grpn-1.4.1/test_gtk_ver.c
Examining data/grpn-1.4.1/error.c
Examining data/grpn-1.4.1/run_cmd.h
Examining data/grpn-1.4.1/number.c
Examining data/grpn-1.4.1/constant.h
Examining data/grpn-1.4.1/undo.h
Examining data/grpn-1.4.1/error.h
Examining data/grpn-1.4.1/mode.h
Examining data/grpn-1.4.1/mode.c
Examining data/grpn-1.4.1/number.h
Examining data/grpn-1.4.1/stack.c
Examining data/grpn-1.4.1/complex.h
Examining data/grpn-1.4.1/matrix.h
Examining data/grpn-1.4.1/process_input.h
Examining data/grpn-1.4.1/constant.c
Examining data/grpn-1.4.1/editor.h
Examining data/grpn-1.4.1/callback_buttons.c
Examining data/grpn-1.4.1/callback_menu.c
Examining data/grpn-1.4.1/editor.c
Examining data/grpn-1.4.1/setup_buttons.c
Examining data/grpn-1.4.1/test.h
Examining data/grpn-1.4.1/test.c
Examining data/grpn-1.4.1/button_def.c
Examining data/grpn-1.4.1/lcd.c
Examining data/grpn-1.4.1/funcs.h
Examining data/grpn-1.4.1/circle.c

FINAL RESULTS:

data/grpn-1.4.1/complex.c:135:7:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
      sprintf(c, "(%s< %s)", p1, p2);
data/grpn-1.4.1/complex.c:139:7:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
      sprintf(c, "(%s; %s)", p1, p2);
data/grpn-1.4.1/complex.c:168:7:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
      sprintf(c, "(%s< %s)", p1, p2);
data/grpn-1.4.1/complex.c:172:7:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
      sprintf(c, "(%s; %s)", p1, p2);
data/grpn-1.4.1/error.c:51:7:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
      sprintf(ErrorString, "%s Error: Too few Arguments.", name);
data/grpn-1.4.1/error.c:58:4:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
   sprintf(ErrorString, "%s Error: Invalid Type.", name);
data/grpn-1.4.1/help.c:209:7:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
      strcpy(htxt, LICENSE_TXT);
data/grpn-1.4.1/help.c:237:7:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
      strcpy(htxt, HELP_TXT);
data/grpn-1.4.1/help.c:243:9:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
	       strcat(htxt, cmd);
data/grpn-1.4.1/help.c:246:9:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
	       strcat(htxt, rowinf[i].fi[j].help);
data/grpn-1.4.1/help.c:268:7:  [4] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused).
      strcpy(htxt, GRPN_VERSION);
data/grpn-1.4.1/help.c:269:7:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
      strcat(htxt, ABOUT_TXT);
data/grpn-1.4.1/matrix.c:153:13:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
            strcat(c, (p1=printNumberShort(*(a->data+(a->cols*i)+j))));
data/grpn-1.4.1/run_cmd.c:85:7:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
      sprintf(getStringError(), "%s: Ambigious command name.", line);
data/grpn-1.4.1/run_cmd.c:88:7:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
      sprintf(getStringError(), "%s: Unrecognized command.", line);
data/grpn-1.4.1/editor.c:30:1:  [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 Ebuf[EDIT_BUF_LEN];     /* the edit buffer */
data/grpn-1.4.1/error.c:28:1:  [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 ErrorString[MAX_ERROR_SIZE] = { 0 };
data/grpn-1.4.1/error.h:25:8:  [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.
extern char ErrorString[MAX_ERROR_SIZE];
data/grpn-1.4.1/funcs.c:871:4:  [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 *p, buf[2];
data/grpn-1.4.1/lcd.c:288:4:  [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 label[16];  /* the stack number label */
data/grpn-1.4.1/lcd.c:348:7:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
      sprintf(label, "%d: ", indx+1);
data/grpn-1.4.1/lcd.c:376:7:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
      sprintf(label, "%d: ", i+1);
data/grpn-1.4.1/matrix.c:136:4:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
   sprintf(c, "[%d x %d Matrix]", a->rows, a->cols);
data/grpn-1.4.1/matrix.c:150:7:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
      strcat(c, "[ ");
data/grpn-1.4.1/matrix.c:157:28:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
         if(i < a->rows-1) strcat(c, " \n");
data/grpn-1.4.1/matrix.c:207:7:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
      sprintf(getStringError(), "* Error: Invalid dimension.");
data/grpn-1.4.1/matrix.c:433:7:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
      sprintf(getStringError(), "+ Error: Invalid dimension.");
data/grpn-1.4.1/matrix.c:521:7:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
      sprintf(getStringError(), "- Error: Invalid dimension.");
data/grpn-1.4.1/mode.c:63:11:  [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.
   static char buf[256];
data/grpn-1.4.1/mode.c:68:10:  [2] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused). Risk is low because the source is a constant string.
         strcpy(buf, " Degrees   ");
data/grpn-1.4.1/mode.c:71:10:  [2] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused). Risk is low because the source is a constant string.
         strcpy(buf, " Radians   ");
data/grpn-1.4.1/mode.c:81:10:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
         strcat(buf, "Rectangular   ");
data/grpn-1.4.1/mode.c:84:10:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
         strcat(buf, "Polar   ");
data/grpn-1.4.1/mode.c:94:10:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
         strcat(buf, "Binary");
data/grpn-1.4.1/mode.c:97:10:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
         strcat(buf, "Octal");
data/grpn-1.4.1/mode.c:100:10:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
         strcat(buf, "Decimal");
data/grpn-1.4.1/mode.c:103:10:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
         strcat(buf, "Decimal-Eng");
data/grpn-1.4.1/mode.c:106:10:  [2] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant string.
         strcat(buf, "Hexadecimal");
data/grpn-1.4.1/real.c:142:4:  [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 buf[REAL_PRINT_SIZE];
data/grpn-1.4.1/real.c:188:19:  [2] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused). Risk is low because the source is a constant string.
                  strcpy(c, "00");
data/grpn-1.4.1/real.c:194:16:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
               sprintf(c, "%.*g",PRINT_REAL_DIG, a->num);
data/grpn-1.4.1/real.c:202:20:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
                   sprintf(c, "%.*e",DBL_DIG, a->num);
data/grpn-1.4.1/real.c:235:22:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
                     sprintf(c,"%.*ge%+d",PRINT_REAL_DIG,mantissa,exponent); 
data/grpn-1.4.1/real.c:237:22:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
                     sprintf(c,"%.*g",PRINT_REAL_DIG,a->num); 
data/grpn-1.4.1/real.c:269:19:  [2] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused). Risk is low because the source is a constant string.
                  strcpy(c, "0x0");
data/grpn-1.4.1/real.c:271:5:  [2] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused). Risk is low because the source is a constant string.
		  strcpy(c, "0x");
data/grpn-1.4.1/real.c:278:10:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
         sprintf(c, "NaN");
data/grpn-1.4.1/real.c:281:10:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
         sprintf(c, "Infinity");
data/grpn-1.4.1/complex.c:176:7:  [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).
   if(strlen(p1)+strlen(p2)+4 > lcdWidth-4) *(c+strlen(p1)+2) = '\n';
data/grpn-1.4.1/complex.c:176: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).
   if(strlen(p1)+strlen(p2)+4 > lcdWidth-4) *(c+strlen(p1)+2) = '\n';
data/grpn-1.4.1/complex.c:176:49:  [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).
   if(strlen(p1)+strlen(p2)+4 > lcdWidth-4) *(c+strlen(p1)+2) = '\n';
data/grpn-1.4.1/error.c:44:4:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
   strncpy(ErrorString, error, MAX_ERROR_SIZE);
data/grpn-1.4.1/funcs.c:65:10:  [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).
      if(strlen(line) > pos) runCmd(line+pos);
data/grpn-1.4.1/help.c:212:9:  [1] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant character.
	       strcat(htxt, "\n");
data/grpn-1.4.1/help.c:244:20:  [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).
	       len = 12 - strlen(cmd);
data/grpn-1.4.1/help.c:245:30:  [1] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant character.
	       for(k=0; k<len; k++) strcat(htxt, " ");
data/grpn-1.4.1/help.c:247:9:  [1] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant character.
	       strcat(htxt, "\n");
data/grpn-1.4.1/help.c:272:9:  [1] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant character.
	       strcat(htxt, "\n");
data/grpn-1.4.1/lcd.c:318:16:  [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).
      strLen = strlen(c);
data/grpn-1.4.1/lcd.c:320:7:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
      strncpy(lcdText[0], c, strLen);
data/grpn-1.4.1/lcd.c:349: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).
      labelLen = strlen(label);
data/grpn-1.4.1/lcd.c:351:7:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
      strncpy(lcdText[row], label, labelLen);
data/grpn-1.4.1/lcd.c:356:10:  [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).
	 pLen = strlen(p);
data/grpn-1.4.1/lcd.c:361:3:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
	 strncpy(&(lcdText[i][txtPos]), p, lcdWidth-txtPos);
data/grpn-1.4.1/lcd.c:377: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).
      labelLen = strlen(label);
data/grpn-1.4.1/lcd.c:379:7:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
      strncpy(lcdText[j-1], label, labelLen);
data/grpn-1.4.1/lcd.c:390:16:  [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).
      strLen = strlen(txt);
data/grpn-1.4.1/lcd.c:393:7:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
      strncpy(lcdText[lcdHeight-1], txt, strLen);
data/grpn-1.4.1/lcd.c:769:10:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
         strncpy(str+(i*(width+1)), &(lcdText[i+hiY1][hiX1]), width);
data/grpn-1.4.1/matrix.c:154:13:  [1] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant character.
            strcat(c, " ");
data/grpn-1.4.1/matrix.c:159:7:  [1] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused). Risk is low because the
  source is a constant character.
      strcat(c, "]");
data/grpn-1.4.1/real.c:163:19:  [1] (buffer) strcpy:
  Does not check for buffer overflows when copying to destination [MS-banned]
  (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy
  easily misused). Risk is low because the source is a constant character.
                  strcpy(c, "0");
data/grpn-1.4.1/real.c:165:5:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
		  strncpy(c, p+2, i-1);
data/grpn-1.4.1/real.c:190:5:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
		  strncpy(c, p+1, i-0);
data/grpn-1.4.1/real.c:272:5:  [1] (buffer) strncat:
  Easily used incorrectly (e.g., incorrectly computing the correct maximum
  size to add) [MS-banned] (CWE-120). Consider strcat_s, strlcat, snprintf,
  or automatically resizing strings.
		  strncat(c, p+2, i-1);
data/grpn-1.4.1/run_cmd.c:45: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).
   lineLen = strlen(line);
data/grpn-1.4.1/run_cmd.c:52:22:  [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).
            cmdLen = strlen(rowinf[i].fi[j].cmd);

ANALYSIS SUMMARY:

Hits = 77
Lines analyzed = 9612 in approximately 0.32 seconds (30166 lines/second)
Physical Source Lines of Code (SLOC) = 6500
Hits@level = [0] 164 [1]  29 [2]  33 [3]   0 [4]  15 [5]   0
Hits@level+ = [0+] 241 [1+]  77 [2+]  48 [3+]  15 [4+]  15 [5+]   0
Hits/KSLOC@level+ = [0+] 37.0769 [1+] 11.8462 [2+] 7.38462 [3+] 2.30769 [4+] 2.30769 [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.