|  | @@ -21,9 +21,10 @@ void add_node(JsonEncoder* this, char* str){
 | 
	
		
			
				|  |  |      JsonNode* node;
 | 
	
		
			
				|  |  |      node = malloc(sizeof(JsonNode));
 | 
	
		
			
				|  |  |      //Allocation node
 | 
	
		
			
				|  |  | -    node->str = malloc(strlen(str) * sizeof(char));
 | 
	
		
			
				|  |  | -    //Initialisation node
 | 
	
		
			
				|  |  | -    strcpy(node->str, str);
 | 
	
		
			
				|  |  | +    int length = strlen(str) + 1;
 | 
	
		
			
				|  |  | +    node->str = malloc(length * sizeof(char));
 | 
	
		
			
				|  |  | +    memset(node->str, 0, length);
 | 
	
		
			
				|  |  | +    strncpy(node->str, str, length - 1);
 | 
	
		
			
				|  |  |      //Si 1er node
 | 
	
		
			
				|  |  |      if(this->head == NULL){
 | 
	
		
			
				|  |  |          this->head = node;
 | 
	
	
		
			
				|  | @@ -61,8 +62,9 @@ void add_value(JsonEncoder* this, char* str){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void add_string(JsonEncoder* this, char* key, char* val){
 | 
	
		
			
				|  |  |      //Creation chaine
 | 
	
		
			
				|  |  | -    char* str;
 | 
	
		
			
				|  |  | -    str = malloc((strlen(key) + strlen(val) + 4 + 2 + 1) * sizeof(char)); //clef + val + 4 guillemet + ": " + \0
 | 
	
		
			
				|  |  | +    int length = strlen(key) + strlen(val) + 4 + 2 + 1; //clef + val + 4 guillemet + ": " + \0
 | 
	
		
			
				|  |  | +    char* str = malloc(length * sizeof(char)); 
 | 
	
		
			
				|  |  | +    memset(str, 0, length);
 | 
	
		
			
				|  |  |      sprintf(str, "\"%s\": \"%s\"", key, val);
 | 
	
		
			
				|  |  |      //Ajout
 | 
	
		
			
				|  |  |      add_value(this, str);
 | 
	
	
		
			
				|  | @@ -74,8 +76,9 @@ void add_number(JsonEncoder* this, char* key, double val, int ndigit){
 | 
	
		
			
				|  |  |      char nombre[20];
 | 
	
		
			
				|  |  |      ftoa(val, nombre, ndigit);
 | 
	
		
			
				|  |  |      //Creation chaine
 | 
	
		
			
				|  |  | -    char* str;
 | 
	
		
			
				|  |  | -    str = malloc((strlen(key) + strlen(nombre) + 2 + 2 + 1) * sizeof(char)); //clef + val + 2 guillemets + ": " + \0
 | 
	
		
			
				|  |  | +    int length = strlen(key) + strlen(nombre) + 2 + 2 + 1; //clef + val + 2 guillemets + ": " + \0
 | 
	
		
			
				|  |  | +    char* str = malloc(length * sizeof(char));
 | 
	
		
			
				|  |  | +    memset(str, 0, length);
 | 
	
		
			
				|  |  |      sprintf(str, "\"%s\": %s", key, nombre);
 | 
	
		
			
				|  |  |      //Ajout
 | 
	
		
			
				|  |  |      add_value(this, str);
 | 
	
	
		
			
				|  | @@ -84,8 +87,9 @@ void add_number(JsonEncoder* this, char* key, double val, int ndigit){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void add_integer(JsonEncoder* this, char* key, int val){
 | 
	
		
			
				|  |  |      //Creation chaine
 | 
	
		
			
				|  |  | -    char* str;
 | 
	
		
			
				|  |  | -    str = malloc((strlen(key) + ceil(val/10.0) + 2 + 2 + 1) * sizeof(char)); //clef + val + 2 guillemets + ": " + \0
 | 
	
		
			
				|  |  | +    int length = strlen(key) + ceil(val/10.0) + 2 + 2 + 1; //clef + val + 2 guillemets + ": " + \0
 | 
	
		
			
				|  |  | +    char* str = malloc(length * sizeof(char)); 
 | 
	
		
			
				|  |  | +    memset(str, 0, length);
 | 
	
		
			
				|  |  |      sprintf(str, "\"%s\": %d", key, val);
 | 
	
		
			
				|  |  |      //Ajout
 | 
	
		
			
				|  |  |      add_value(this, str);
 | 
	
	
		
			
				|  | @@ -101,8 +105,9 @@ void add_boolean(JsonEncoder* this, char* key, boolean val){
 | 
	
		
			
				|  |  |          strcpy(bool, "false");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      //Creation chaine
 | 
	
		
			
				|  |  | -    char* str;
 | 
	
		
			
				|  |  | -    str = malloc((strlen(key) + strlen(bool) + 2 + 2 + 1) * sizeof(char)); //clef + val + 2 guillemets + ": " + \0
 | 
	
		
			
				|  |  | +    int length = strlen(key) + strlen(bool) + 2 + 2 + 1; //clef + val + 2 guillemets + ": " + \0
 | 
	
		
			
				|  |  | +    char* str = malloc(length * sizeof(char));
 | 
	
		
			
				|  |  | +    memset(str, 0, length);
 | 
	
		
			
				|  |  |      sprintf(str, "\"%s\": %s", key, bool);
 | 
	
		
			
				|  |  |      //Ajout
 | 
	
		
			
				|  |  |      add_value(this, str);
 | 
	
	
		
			
				|  | @@ -118,8 +123,9 @@ void add_object(JsonEncoder* this, char* key, JsonEncoder val){
 | 
	
		
			
				|  |  |      char* json;
 | 
	
		
			
				|  |  |      json = json_encode(&val);
 | 
	
		
			
				|  |  |      //Creation chaine
 | 
	
		
			
				|  |  | -    char* str;
 | 
	
		
			
				|  |  | -    str = malloc((strlen(key) + strlen(json) + 2 + 2 + 1) * sizeof(char)); //clef + val + 2 guillemets + ": " + \0
 | 
	
		
			
				|  |  | +    int length = strlen(key) + strlen(json) + 2 + 2 + 1; //clef + val + 2 guillemets + ": " + \0
 | 
	
		
			
				|  |  | +    char* str = malloc(length * sizeof(char));
 | 
	
		
			
				|  |  | +    memset(str, 0, length);
 | 
	
		
			
				|  |  |      sprintf(str, "\"%s\": %s", key, json);
 | 
	
		
			
				|  |  |      //Ajout
 | 
	
		
			
				|  |  |      add_value(this, str);
 | 
	
	
		
			
				|  | @@ -132,6 +138,7 @@ char* json_encode(JsonEncoder* this){
 | 
	
		
			
				|  |  |      //Allocation chaine
 | 
	
		
			
				|  |  |      char* str;
 | 
	
		
			
				|  |  |      str = malloc((this->length + 2) * sizeof(char)); // La chaine + {}
 | 
	
		
			
				|  |  | +    memset(str, 0, this->length + 2);
 | 
	
		
			
				|  |  |      //Creation de la chaine
 | 
	
		
			
				|  |  |      JsonNode* node;
 | 
	
		
			
				|  |  |      node = this->head;
 | 
	
	
		
			
				|  | @@ -142,7 +149,7 @@ char* json_encode(JsonEncoder* this){
 | 
	
		
			
				|  |  |              first = false;
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              sprintf(str, "%s, %s", str, node->str);
 | 
	
		
			
				|  |  | -        }    
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          node = node->next;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      sprintf(str, "%s}", str);
 |