Print this page
12259 CTF shouldn't assume enum size

*** 8,18 **** * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* ! * Copyright (c) 2019, Joyent, Inc. */ #include <stdint.h> /* --- 8,18 ---- * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* ! * Copyright 2020 Joyent, Inc. */ #include <stdint.h> /*
*** 70,74 **** --- 70,104 ---- } chrono_t; enum ff6 ff6; ff10_t ff10; chrono_t trigger; + + /* + * Normally enums are integer-sized, but a packed enum is a counter-example, as + * is something like trace_alloc_type_t which can't fit in an int. + */ + + enum char_enum { + CE1, + CE2 + } __attribute__((packed)) ce; + + enum short_enum { + SE1, + SE2, + SE3 = 255, + SE4 = 256, + SE5 = 257 + } __attribute__((packed)) se; + + enum int_enum { + IE1, + IE2, + IE3 = 256, + IE4 = 257 + } ie; + + enum ll_enum { + LLE1 = -1ULL, + LLE2 = -2ULL, + } lle;