Skip to content

Commit d0b4eb3

Browse files
committed
ubsan: Add __ubsan_handle_vla_bound_not_positive
Another missing ubsan handler from gcc. Signed-off-by: Keith Packard <[email protected]>
1 parent 33907c5 commit d0b4eb3

File tree

4 files changed

+48
-1
lines changed

4 files changed

+48
-1
lines changed

newlib/libc/ubsan/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ picolibc_sources(
6363
ubsan_handle_sub_overflow.c
6464
ubsan_handle_type_mismatch.c
6565
ubsan_handle_type_mismatch_v1.c
66+
ubsan_handle_vla_bound_not_positive.c
6667
ubsan_message.c
6768
ubsan_type_check_to_string.c
6869
ubsan_val_to_imax.c

newlib/libc/ubsan/meson.build

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ srcs_ubsan = [
6363
'ubsan_handle_sub_overflow.c',
6464
'ubsan_handle_type_mismatch.c',
6565
'ubsan_handle_type_mismatch_v1.c',
66+
'ubsan_handle_vla_bound_not_positive.c',
6667
'ubsan_message.c',
6768
'ubsan_type_check_to_string.c',
6869
'ubsan_val_to_imax.c',

newlib/libc/ubsan/ubsan.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ struct cfi_check_fail_data {
224224
struct type_descriptor *type;
225225
};
226226

227-
struct vla_bound_not_positive_data {
227+
struct vla_bound_data {
228228
struct source_location location;
229229
struct type_descriptor *type;
230230
};
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* SPDX-License-Identifier: BSD-3-Clause
3+
*
4+
* Copyright © 2025 Keith Packard
5+
*
6+
* Redistribution and use in source and binary forms, with or without
7+
* modification, are permitted provided that the following conditions
8+
* are met:
9+
*
10+
* 1. Redistributions of source code must retain the above copyright
11+
* notice, this list of conditions and the following disclaimer.
12+
*
13+
* 2. Redistributions in binary form must reproduce the above
14+
* copyright notice, this list of conditions and the following
15+
* disclaimer in the documentation and/or other materials provided
16+
* with the distribution.
17+
*
18+
* 3. Neither the name of the copyright holder nor the names of its
19+
* contributors may be used to endorse or promote products derived
20+
* from this software without specific prior written permission.
21+
*
22+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26+
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
27+
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31+
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
33+
* OF THE POSSIBILITY OF SUCH DAMAGE.
34+
*/
35+
36+
#include "ubsan.h"
37+
38+
void
39+
__ubsan_handle_vla_bound_not_positive(void *_data,
40+
void *ptr)
41+
{
42+
struct vla_bound_data *data = _data;
43+
__ubsan_error(&data->location, "vla_bound_not_positive", "(%s) %p\n",
44+
data->type->type_name, ptr);
45+
}

0 commit comments

Comments
 (0)