+2015-05-17 Mark Wielaard <mjw@redhat.com>
+
+ * eblobjnote.c (ebl_object_note): If allocation buf is large, then
+ allocate it with malloc.
+
2015-05-17 Mark Wielaard <mjw@redhat.com>
* eblopenbackend.c (MAX_PREFIX_LEN): New define (16).
/* Print contents of object file note.
- Copyright (C) 2002, 2007, 2009, 2011 Red Hat, Inc.
+ Copyright (C) 2002, 2007, 2009, 2011, 2015 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
#include <inttypes.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <libeblP.h>
.d_size = descsz,
.d_buf = (void *) desc
};
- uint32_t buf[descsz / 4];
+ /* Normally NT_GNU_ABI_TAG is just 4 words (16 bytes). If it
+ is much (4*) larger dynamically allocate memory to convert. */
+#define FIXED_TAG_BYTES 16
+ uint32_t sbuf[FIXED_TAG_BYTES];
+ uint32_t *buf;
+ if (unlikely (descsz / 4 > FIXED_TAG_BYTES))
+ {
+ buf = malloc (descsz);
+ if (unlikely (buf == NULL))
+ return;
+ }
+ else
+ buf = sbuf;
Elf_Data out =
{
.d_version = EV_CURRENT,
}
putchar_unlocked ('\n');
}
+ if (descsz / 4 > FIXED_TAG_BYTES)
+ free (buf);
break;
}
/* FALLTHROUGH */