aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyrill Gorcunov <gorcunov@gmail.com>2020-11-04 13:08:06 +0300
committerCyrill Gorcunov <gorcunov@gmail.com>2020-11-04 13:08:06 +0300
commit93c774d482694643cafbc82578ac8b729fb5bc8b (patch)
treec86275439ebaf89e4bca9ca14dad6bc0596e2801
parente24e18e6b91f6ae40c9f03fc155683127154f137 (diff)
downloadnasm-93c774d482694643cafbc82578ac8b729fb5bc8b.tar.gz
nasm-93c774d482694643cafbc82578ac8b729fb5bc8b.tar.xz
nasm-93c774d482694643cafbc82578ac8b729fb5bc8b.zip
BR3392637: output/outieee: Fix nil dereference
The handling been broken in commit 98578071. Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
-rw-r--r--output/outieee.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/output/outieee.c b/output/outieee.c
index bff2f085..b3ccc5f6 100644
--- a/output/outieee.c
+++ b/output/outieee.c
@@ -795,6 +795,23 @@ static int32_t ieee_segment(char *name, int *bits)
define_label(name, seg->index + 1, 0L, false);
ieee_seg_needs_update = NULL;
+ /*
+ * In commit 98578071b9d71ecaa2344dd9c185237c1765041e
+ * we reworked labels significantly which in turn lead
+ * to the case where seg->name = NULL here and we get
+ * nil dereference in next segments definitions.
+ *
+ * Lets placate this case with explicit name setting
+ * if labels engine didn't set it yet.
+ *
+ * FIXME: Need to revisit this moment if such fix doesn't
+ * break anything but since IEEE 695 format is veeery
+ * old I don't expect there are many users left. In worst
+ * case this should only lead to a memory leak.
+ */
+ if (!seg->name)
+ seg->name = nasm_strdup(name);
+
if (seg->use32)
*bits = 32;
else