diff --git a/config/concat.c b/config/concat.c new file mode 100644 index 0000000000000000000000000000000000000000..fb39ff991b9d70015d054d0e8c7cf39cc79ce018 --- /dev/null +++ b/config/concat.c @@ -0,0 +1,47 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "__fc_builtin.h" +#include "libstring.h" + +#define MAX_LEN 255 + +int main() { + string_t *str1, *str2, *result; + char buffer1[MAX_LEN + 1]; + char buffer2[MAX_LEN + 1]; + + for (int i = 0; i < MAX_LEN; i++) { + buffer1[i] = (char) Frama_C_interval(1, 127); + buffer2[i] = (char) Frama_C_interval(1, 127); + } + Frama_C_show_each_buffer1(buffer1); + Frama_C_show_each_buffer2(buffer2); + + buffer1[MAX_LEN] = '\0'; + buffer2[MAX_LEN] = '\0'; + + str1 = string_new(buffer1); + if (!str1) return 1; + + str2 = string_new(buffer2); + if (!str2) { + free(str1); + return 1; + } + + result = string_concat(str1, str2); + if (!result) { + free(str1); + free(str2); + return 1; + } + + printf("Concatenated string: %s\n", result->buf); + + free(result); + free(str1); + free(str2); + + return 0; +} diff --git a/config/cwe20.c b/config/cwe20.c index 9a723653eb1eb7474248a502ab6c75b6e3b0d4e4..ed4693aca8969bd8a6e5f7e71a01702e1979c047 100644 --- a/config/cwe20.c +++ b/config/cwe20.c @@ -16,18 +16,26 @@ int main () { board_square_t *board; printf("Please specify the board height: \n"); error = scanf("%d", &m); - if ( EOF == error ){ + if ( EOF == error || m <= 0){ die("No integer passed: Die evil hacker!\n"); } printf("Please specify the board width: \n"); error = scanf("%d", &n); - if ( EOF == error ){ + if ( EOF == error || n <= 0){ die("No integer passed: Die evil hacker!\n"); } if ( m > MAX_DIM || n > MAX_DIM ) { die("Value too large: Die evil hacker!\n"); } + //@ split m; + //@ split n; board = (board_square_t*) malloc( m * n * sizeof(board_square_t)); + + if(!board){ + printf("malloc failed\n"); + return 2; + } + for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { board[n*i+j] = 0; diff --git a/config/replace.c b/config/replace.c new file mode 100644 index 0000000000000000000000000000000000000000..857463b241827b7779be0d420d5c2865c3728c16 --- /dev/null +++ b/config/replace.c @@ -0,0 +1,49 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "__fc_builtin.h" +#include "libstring.h" + +#define FIXED_LEN 20 + +int main() { + string_t *str, *old_char, *new_char, *result; + char buffer[FIXED_LEN + 1]; + + for (int i = 0; i < FIXED_LEN; i++) { + buffer[i] = (char) Frama_C_interval(65, 90); // Lettres majuscules A-Z + } + buffer[FIXED_LEN] = '\0'; + + str = string_new(buffer); + if (!str) return 1; + + char old_c = (char) Frama_C_interval(65, 90); + char new_c = (char) Frama_C_interval(97, 122); + + old_char = string_new(&old_c); + new_char = string_new(&new_c); + + if (!old_char || !new_char) { + free(str); + return 1; + } + + result = string_replace(str, old_char, new_char); + if (!result) { + free(str); + free(old_char); + free(new_char); + return 1; + } + + printf("Original: %s\n", str->buf); + printf("Replaced: %s\n", result->buf); + + free(result); + free(str); + free(old_char); + free(new_char); + + return 0; +}