Skip to content
Snippets Groups Projects
cwe416.c 771 B
Newer Older
Andre Maroneze's avatar
Andre Maroneze committed
// Based on MITRE's CWE-416, demonstrative example 1
// https://cwe.mitre.org/data/definitions/416.html

// Run with "-eva-precision 1" to obtain a "Red Alarm".

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define BUFSIZER1 512
#define BUFSIZER2 ((BUFSIZER1/2) - 8)

int main(int argc, char **argv) {
  char *buf1R1;
  char *buf2R1;
  char *buf2R2;
  char *buf3R2;
  buf1R1 = (char *) malloc(BUFSIZER1);
  if (!buf1R1) exit(1);
Andre Maroneze's avatar
Andre Maroneze committed
  buf2R1 = (char *) malloc(BUFSIZER1);
  if (!buf2R1) exit(1);
Andre Maroneze's avatar
Andre Maroneze committed
  free(buf2R1);
  buf2R2 = (char *) malloc(BUFSIZER2);
  if (!buf2R2) exit(1);
Andre Maroneze's avatar
Andre Maroneze committed
  buf3R2 = (char *) malloc(BUFSIZER2);
  if (!buf3R2) exit(1);
Andre Maroneze's avatar
Andre Maroneze committed
  strncpy(buf2R1, argv[1], BUFSIZER1-1);
  free(buf1R1);
  free(buf2R2);
  free(buf3R2);
  return 0;
}