Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 09a7634

Browse files
committed
support newer __counted_by bounds checks for flex arrays
1 parent 28d207b commit 09a7634

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

‎core/potion.h‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ and optionally args, statically typed via signature strings.
6767
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
6868
#endif
6969

70-
#if HAVE_ATTRIBUTE_ELEMENT_COUNT
70+
#if HAVE_COUNTED_BY
71+
# define __bounds(siz) __counted_by(siz)
72+
#elif HAVE_ATTRIBUTE_ELEMENT_COUNT
7173
# define __bounds(siz) __attribute__((__element_count__(siz)))
7274
#else
7375
# define __bounds(siz)

‎tools/config.sh‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,11 @@ else
162162
fi
163163
#ARGDIR=`echo "#include <stdio.h>void a2(int *a, int b, int c) { printf(\\"%d\\", (int)(&c - &b)); }void a1(int a) { a2(&a,a+4,a+2); }int main() { a1(9); return 0; }" > $AC && $CCEX && $AOUT && rm -f $AOUT`
164164
HAVE_ASAN=`echo "#include <stdio.h>__attribute__((no_address_safety_analysis)) int main() { puts(\\"1\\"); return 0; }" > $AC && $CCEX -Werror 3ドル 2>&1 && $AOUT && rm -f $AOUT`
165-
if [ "$HAVE_ASAN" = "1" ]; then HAVE_ASAN=1; else HAVE_ASAN=0; fi
165+
if [ "$HAVE_ASAN" = "1" ]; then HAVE_ASAN=1; else HAVE_ASAN=0; fi
166+
HAVE_COUNTED_BY=`echo "#include <stdio.h>struct{int size;int flex[] __counted_by(size);}x;int main() { puts(\\"1\\"); return 0; }" > $AC && $CCEX -Werror 3ドル 2>&1 && $AOUT && rm -f $AOUT`
167+
if [ "$HAVE_COUNTED_BY" = "1" ]; then HAVE_COUNTED_BY=1; else HAVE_COUNTED_BY=0; fi
166168
HAVE_ATTRIBUTE_ELEMENT_COUNT=`echo "#include <stdio.h>struct{int size;int flex[] __attribute__((__element_count__(size)));}x;int main() { puts(\\"1\\"); return 0; }" > $AC && $CCEX -Werror 3ドル 2>&1 && $AOUT && rm -f $AOUT`
167-
if [ "$HAVE_ATTRIBUTE_ELEMENT_COUNT" = "1" ]; then HAVE_ATTRIBUTE_ELEMENT_COUNT=1; else HAVE_ATTRIBUTE_ELEMENT_COUNT=0; fi
169+
if [ "$HAVE_ATTRIBUTE_ELEMENT_COUNT" = "1" ]; then HAVE_ATTRIBUTE_ELEMENT_COUNT=1; else HAVE_ATTRIBUTE_ELEMENT_COUNT=0; fi
168170
else
169171
# hard coded win32 values
170172
if [ "$JIT_X86_64" != "" -o "$JIT_AMD64" != "" ]; then
@@ -188,6 +190,7 @@ else
188190
fi
189191
STACKDIR="-1"
190192
HAVE_ASAN="0"
193+
HAVE_COUNTED_BY="0"
191194
HAVE_ATTRIBUTE_ELEMENT_COUNT="0"
192195
fi
193196

@@ -206,6 +209,7 @@ else
206209
echo "#define POTION_STACK_DIR $STACKDIR"
207210
#echo "#define POTION_ARGS_DIR $ARGDIR"
208211
echo "#define HAVE_ASAN_ATTR $HAVE_ASAN"
212+
echo "#define HAVE_COUNTED_BY $HAVE_COUNTED_BY"
209213
echo "#define HAVE_ATTRIBUTE_ELEMENT_COUNT $HAVE_ATTRIBUTE_ELEMENT_COUNT"
210214
echo "#ifndef SANDBOX"
211215
echo "#define WITH_EXTERN 1"

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /