mirror of
https://github.com/open-simh/simtools.git
synced 2026-05-01 13:55:56 +00:00
Consistent out-of-memory checks.
This commit is contained in:
31
dumpobj.c
31
dumpobj.c
@@ -59,6 +59,19 @@ FILE *bin = NULL;
|
|||||||
int badbin = 0;
|
int badbin = 0;
|
||||||
int xferad = 1;
|
int xferad = 1;
|
||||||
|
|
||||||
|
/* memcheck - crash out if a pointer (returned from malloc) is NULL. */
|
||||||
|
|
||||||
|
void *memcheck(
|
||||||
|
void *ptr)
|
||||||
|
{
|
||||||
|
if (ptr == NULL) {
|
||||||
|
fprintf(stderr, "Out of memory.\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
char *readrec(
|
char *readrec(
|
||||||
FILE *fp,
|
FILE *fp,
|
||||||
int *len,
|
int *len,
|
||||||
@@ -306,11 +319,7 @@ void add_gsdline(
|
|||||||
{
|
{
|
||||||
if (nr_gsds >= gsdsize || all_gsds == NULL) {
|
if (nr_gsds >= gsdsize || all_gsds == NULL) {
|
||||||
gsdsize += 128;
|
gsdsize += 128;
|
||||||
all_gsds = realloc(all_gsds, gsdsize * sizeof(char *));
|
all_gsds = memcheck(realloc(all_gsds, gsdsize * sizeof(char *)));
|
||||||
if (all_gsds == NULL) {
|
|
||||||
fprintf(stderr, "Out of memory\n");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
all_gsds[nr_gsds++] = line;
|
all_gsds[nr_gsds++] = line;
|
||||||
@@ -328,11 +337,7 @@ void got_gsd(
|
|||||||
unsigned value;
|
unsigned value;
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
|
|
||||||
gsdline = malloc(256);
|
gsdline = memcheck(malloc(256));
|
||||||
if (gsdline == NULL) {
|
|
||||||
fprintf(stderr, "Out of memory\n");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
unrad50(WORD(cp + i), name);
|
unrad50(WORD(cp + i), name);
|
||||||
unrad50(WORD(cp + i + 2), name + 3);
|
unrad50(WORD(cp + i + 2), name + 3);
|
||||||
@@ -373,7 +378,7 @@ void got_gsd(
|
|||||||
flags & 0100 ? "GBL" : "LCL",
|
flags & 0100 ? "GBL" : "LCL",
|
||||||
flags & 0200 ? "D" : "I",
|
flags & 0200 ? "D" : "I",
|
||||||
flags);
|
flags);
|
||||||
psects[psectid] = strdup(name);
|
psects[psectid] = memcheck(strdup(name));
|
||||||
trim(psects[psectid++]);
|
trim(psects[psectid++]);
|
||||||
psectid %= NPSECTS;
|
psectid %= NPSECTS;
|
||||||
break;
|
break;
|
||||||
@@ -391,7 +396,7 @@ void got_gsd(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gsdline = realloc(gsdline, strlen(gsdline) + 1);
|
gsdline = memcheck(realloc(gsdline, strlen(gsdline) + 1));
|
||||||
add_gsdline(gsdline);
|
add_gsdline(gsdline);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -401,7 +406,7 @@ int compare_gsdlines(
|
|||||||
const void *p2)
|
const void *p2)
|
||||||
{
|
{
|
||||||
const char *const *l1 = p1,
|
const char *const *l1 = p1,
|
||||||
*const *l2 = p2;
|
*const *l2 = p2;
|
||||||
|
|
||||||
return strcmp(*l1, *l2);
|
return strcmp(*l1, *l2);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user