1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
[kernel] Parsing vla_strlen.c (with preprocessing)
/* Generated by Frama-C */
#include "stddef.h"
#include "string.h"
#include "strings.h"
/*@ assigns \nothing;
frees p; */
__attribute__((__FC_BUILTIN__)) void __fc_vla_free(void *p);
/*@ assigns \result;
assigns \result \from \nothing;
allocates \result; */
__attribute__((__FC_BUILTIN__)) void *__fc_vla_alloc(unsigned int size);
void f(char *s)
{
unsigned int __lengthof_t;
size_t tmp;
tmp = strlen((char const *)s);
/*@
assert alloca_bounds: 0 < sizeof(char) * (size_t)(tmp + 1) ≤ 4294967295;
*/
;
__lengthof_t = tmp + (size_t)1;
char *t = __fc_vla_alloc(sizeof(char) * __lengthof_t);
char *p = t;
while (*s) {
char *tmp_0;
char *tmp_1;
tmp_0 = p;
p ++;
tmp_1 = s;
s ++;
*tmp_0 = *tmp_1;
}
*p = (char)0;
__fc_vla_free((void *)t);
return;
}
|