mirror of
https://github.com/openharmony/third_party_elfutils.git
synced 2026-07-19 11:33:45 -04:00
libebl: Use static number for array stack allocation in openbackend.
Help the compiler see we stack allocate a small array. Add assert to check no machine prefix is ever larger than 16. Current maximum number is 7. This prevents gcc warning about possible unbounded stack usage with -Wstack-usage. Signed-off-by: Mark Wielaard <mjw@redhat.com>
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2015-05-17 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* eblopenbackend.c (MAX_PREFIX_LEN): New define (16).
|
||||
(openbackend): Stack allocate symname array using MAX_PREFIX_LEN.
|
||||
|
||||
2015-01-27 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* libebl.h: Add comment from README that this is completely
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Generate ELF backend handle.
|
||||
Copyright (C) 2000-2014 Red Hat, Inc.
|
||||
Copyright (C) 2000-2015 Red Hat, Inc.
|
||||
This file is part of elfutils.
|
||||
|
||||
This file is free software; you can redistribute it and/or modify
|
||||
@@ -135,6 +135,8 @@ static const struct
|
||||
};
|
||||
#define nmachines (sizeof (machines) / sizeof (machines[0]))
|
||||
|
||||
/* No machine prefix should be larger than this. */
|
||||
#define MAX_PREFIX_LEN 16
|
||||
|
||||
/* Default callbacks. Mostly they just return the error value. */
|
||||
static const char *default_object_type_name (int ignore, char *buf,
|
||||
@@ -343,7 +345,11 @@ openbackend (elf, emulation, machine)
|
||||
static const char version[] = MODVERSION;
|
||||
const char *modversion;
|
||||
ebl_bhinit_t initp;
|
||||
char symname[machines[cnt].prefix_len + sizeof "_init"];
|
||||
|
||||
// We use a static number to help the compiler see we don't
|
||||
// overflow the stack with an arbitrary number.
|
||||
assert (machines[cnt].prefix_len <= MAX_PREFIX_LEN);
|
||||
char symname[MAX_PREFIX_LEN + sizeof "_init"];
|
||||
|
||||
strcpy (mempcpy (symname, machines[cnt].prefix,
|
||||
machines[cnt].prefix_len), "_init");
|
||||
|
||||
Reference in New Issue
Block a user