[PATCH] boot: fix memory leaks by freeing token.val in pxe_utils.c
ant.v.moryakov at gmail.com
ant.v.moryakov at gmail.com
Fri May 16 18:05:42 CEST 2025
From: Anton Moryakov <ant.v.moryakov at gmail.com>
Added free(t.val) for T_STRING case
- Added free(t.val) in T_EOL and T_EOF cases
- Added free(t.val) in default case
- Added free(t.val) on error conditions
- Prevents memory leaks from get_token() allocations
Signed-off-by: Anton Moryakov <ant.v.moryakov at gmail.com>
---
boot/pxe_utils.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c
index 82f217aaf86..81b7602387b 100644
--- a/boot/pxe_utils.c
+++ b/boot/pxe_utils.c
@@ -1277,6 +1277,11 @@ static int parse_label(char **c, struct pxe_menu *cfg)
break;
case T_EOL:
+ free(t.val);
+ break;
+
+ case T_STRING:
+ free(t.val);
break;
default:
@@ -1285,12 +1290,15 @@ static int parse_label(char **c, struct pxe_menu *cfg)
* of a label and whatever token this is, it's
* something for the menu level context to handle.
*/
+ free(t.val);
*c = s;
return 1;
}
- if (err < 0)
+ if (err < 0) {
+ free(t.val);
return err;
+ }
}
}
@@ -1383,19 +1391,28 @@ static int parse_pxefile_top(struct pxe_context *ctx, char *p, unsigned long bas
break;
case T_EOL:
+ free(t.val);
break;
case T_EOF:
+ free(t.val);
return 1;
+
+ case T_STRING:
+ free(t.val);
+ break;
default:
printf("Ignoring unknown command: %.*s\n",
(int)(p - s), s);
+ free(t.val);
eol_or_eof(&p);
}
- if (err < 0)
+ if (err < 0) {
+ free(t.val);
return err;
+ }
}
}
--
2.30.2
More information about the U-Boot
mailing list