These errors were reported by cppcheck: tests/cris/check_openpf1.c:30: error: Mismatching allocation and deallocation: f tests/cris/check_openpf2.c:13: error: Mismatching allocation and deallocation: f tests/cris/check_stat3.c:16: error: Buffer overrun possible for long cmd-line args tests/cris/check_stat4.c:18: error: Buffer overrun possible for long cmd-line args The first two are obvious coding errors (fopen needs fclose, not close). The last two may seem less important (nobody will start test code with an argument of more than 1022 characters which raises a buffer overrun). Fixing them nevertheless helps with static code checks like those done by cppcheck. Signed-off-by: Stefan Weil <weil@mail.berlios.de> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
39 lines
898 B
C
39 lines
898 B
C
/* Check that --sysroot is applied to open(2).
|
|
#sim: --sysroot=@exedir@
|
|
|
|
We assume, with EXE being the name of the executable:
|
|
- The simulator executes with cwd the same directory where the executable
|
|
is located (so argv[0] contains a plain filename without directory
|
|
components).
|
|
- There's no /EXE on the host file system. */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
int main (int argc, char *argv[])
|
|
{
|
|
char *fnam = argv[0];
|
|
FILE *f;
|
|
if (argv[0][0] != '/')
|
|
{
|
|
fnam = malloc (strlen (argv[0]) + 2);
|
|
if (fnam == NULL)
|
|
abort ();
|
|
strcpy (fnam, "/");
|
|
strcat (fnam, argv[0]);
|
|
}
|
|
|
|
f = fopen (fnam, "rb");
|
|
if (f == NULL)
|
|
abort ();
|
|
fclose(f);
|
|
|
|
/* Cover another execution path. */
|
|
if (fopen ("/nonexistent", "rb") != NULL
|
|
|| errno != ENOENT)
|
|
abort ();
|
|
printf ("pass\n");
|
|
return 0;
|
|
}
|