You need to check the return value of your calls; the second fscanf does
not match anything and therefore doesn't assign anything.

//Number 5
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>

int main (int argc, char *argv[]) {
  int8_t *numarray = NULL;
  FILE *numfile = NULL;
  int ret;
  numarray = calloc(10, sizeof(int8_t));
  if (! numarray)
    perror("calloc");
  numfile = fopen("fscanfbug.c", "r");
  if (! numfile)
    perror("fopen");
  if (fscanf(numfile, "//Number %"PRId8, &numarray[8]) != 1)
    printf("First fscanf returned wrong number of elements\n");
  if (fscanf(numfile, "//Number %"PRId8, &numarray[7]) != 1)
    printf("Second fscanf returned wrong number of elements\n");
  printf("The 8th number is: %"PRId8"\n", numarray[8]);
  printf("The 7th number is: %"PRId8" (shouldn't this be the same as above?) 
\n", numarray[7]);
  fclose(numfile);
  free(numarray);
  return 1;
}

if you run this, you will see that it complains at the second fscanf.


** Changed in: glibc (Ubuntu)
       Status: Unconfirmed => Rejected

-- 
fscanf out of bounds write
https://bugs.launchpad.net/bugs/110917
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to