summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>2011-07-12 22:35:21 +0000
committerStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>2011-07-12 22:35:21 +0000
commit269de3533ac58de85bf874afcbc862d73e1944c7 (patch)
treeee762ee7695c977df7c4174fb263308a26b543cf
parentff56267ec0ffefa071f26c22553b9bea216d19f7 (diff)
downloadflashrom-269de3533ac58de85bf874afcbc862d73e1944c7.tar.gz
flashrom-269de3533ac58de85bf874afcbc862d73e1944c7.tar.bz2
flashrom-269de3533ac58de85bf874afcbc862d73e1944c7.zip
Fix unchecked malloc calls and casts of malloc return values
In the long term the exit calls should be replaced by returns. until then this is the correct way to handle failures. the casts are not needed (in C) and we don't cast malloc return values anywhere else. Corresponding to flashrom svn r1370. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
-rw-r--r--flashrom.c18
-rw-r--r--hwaccess.c4
-rw-r--r--pcidev.c4
-rw-r--r--serial.c2
4 files changed, 25 insertions, 3 deletions
diff --git a/flashrom.c b/flashrom.c
index d5892cabb..998a18f58 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1513,7 +1513,11 @@ int erase_and_write_flash(struct flashchip *flash, uint8_t *oldcontents, uint8_t
unsigned int usable_erasefunctions = count_usable_erasers(flash);
msg_cinfo("Erasing and writing flash chip... ");
- curcontents = (uint8_t *) malloc(size);
+ curcontents = malloc(size);
+ if (!curcontents) {
+ msg_gerr("Out of memory!\n");
+ exit(1);
+ }
/* Copy oldcontents to curcontents to avoid clobbering oldcontents. */
memcpy(curcontents, oldcontents, size);
@@ -1880,10 +1884,18 @@ int doit(struct flashchip *flash, int force, const char *filename, int read_it,
goto out_nofree;
}
- oldcontents = (uint8_t *) malloc(size);
+ oldcontents = malloc(size);
+ if (!oldcontents) {
+ msg_gerr("Out of memory!\n");
+ exit(1);
+ }
/* Assume worst case: All bits are 0. */
memset(oldcontents, 0x00, size);
- newcontents = (uint8_t *) malloc(size);
+ newcontents = malloc(size);
+ if (!newcontents) {
+ msg_gerr("Out of memory!\n");
+ exit(1);
+ }
/* Assume best case: All bits should be 1. */
memset(newcontents, 0xff, size);
/* Side effect of the assumptions above: Default write action is erase
diff --git a/hwaccess.c b/hwaccess.c
index efe8bb0e9..8c89925e2 100644
--- a/hwaccess.c
+++ b/hwaccess.c
@@ -226,6 +226,10 @@ int undo_mmio_write(void *p)
{ \
struct undo_mmio_write_data *undo_mmio_write_data; \
undo_mmio_write_data = malloc(sizeof(struct undo_mmio_write_data)); \
+ if (!undo_mmio_write_data) { \
+ msg_gerr("Out of memory!\n"); \
+ exit(1); \
+ } \
undo_mmio_write_data->addr = a; \
undo_mmio_write_data->type = mmio_write_type_##c; \
undo_mmio_write_data->c##data = mmio_read##c(a); \
diff --git a/pcidev.c b/pcidev.c
index 1f9a5cc8d..d4ad8bcd5 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -295,6 +295,10 @@ int undo_pci_write(void *p)
{ \
struct undo_pci_write_data *undo_pci_write_data; \
undo_pci_write_data = malloc(sizeof(struct undo_pci_write_data)); \
+ if (!undo_pci_write_data) { \
+ msg_gerr("Out of memory!\n"); \
+ exit(1); \
+ } \
undo_pci_write_data->dev = *a; \
undo_pci_write_data->reg = b; \
undo_pci_write_data->type = pci_write_type_##c; \
diff --git a/serial.c b/serial.c
index 5cc2fe020..b5049744f 100644
--- a/serial.c
+++ b/serial.c
@@ -110,6 +110,8 @@ fdtype sp_openserport(char *dev, unsigned int baud)
(tolower((unsigned char)dev[1]) == 'o') &&
(tolower((unsigned char)dev[2]) == 'm')) {
dev2 = malloc(strlen(dev) + 5);
+ if (!dev2)
+ sp_die("Error: Out of memory");
strcpy(dev2, "\\\\.\\");
strcpy(dev2 + 4, dev);
}