Viewing file: pr101941-1.c (1.08 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-additional-options "-fconserve-stack" } */
/* Check to make sure that if rfc4106_set_hash_subkey gets split, the error function does not gets split away from the if statement conditionalizing it. */
struct crypto_aes_ctx { char key_dec[128]; };
int rfc4106_set_hash_subkey_hash_subkey;
void __write_overflow(void)__attribute__((__error__(""))); void __write_overflow1(void); void aes_encrypt(void*);
void fortify_panic(const char*) __attribute__((__noreturn__)) ;
char *rfc4106_set_hash_subkey(struct crypto_aes_ctx *ctx) { void *a = &ctx->key_dec[0]; unsigned p_size = __builtin_object_size(a, 0); #ifdef __OPTIMIZE__ if (p_size < 16) { __write_overflow1(); fortify_panic(__func__); } if (p_size < 32) { __write_overflow(); fortify_panic(__func__); } #endif aes_encrypt(ctx); return ctx->key_dec; }
char *(*gg)(struct crypto_aes_ctx *) = rfc4106_set_hash_subkey;
void a(void) { struct crypto_aes_ctx ctx; rfc4106_set_hash_subkey(&ctx); } void b(void) { struct crypto_aes_ctx ctx; ctx.key_dec[0] = 0; rfc4106_set_hash_subkey(&ctx); }
|