Skip to content
Snippets Groups Projects
Commit 16dfb3c9 authored by CAPACES Nicolas's avatar CAPACES Nicolas
Browse files

envoi code qui segfault

parent 019a2f3e
No related branches found
No related tags found
No related merge requests found
...@@ -14,8 +14,8 @@ INSTALL ?= install ...@@ -14,8 +14,8 @@ INSTALL ?= install
#--------------------- #---------------------
# les differents drapeaux que j'utilise pour la compilation # les differents drapeaux que j'utilise pour la compilation
#--------------------- #---------------------
CFLAGS ?= -O3 -Wall -Wextra -Wpedantic CFLAGS ?= -O0 -Wall -Wextra -Wpedantic -ggdb
LFLAGS ?= -g -fPIC LFLAGS ?= -g -fPIC -fPIE
#flag vers la librarie personnelle #flag vers la librarie personnelle
#MFLAG pour "Made Flag" #MFLAG pour "Made Flag"
MFLAGS := -lbase64 MFLAGS := -lbase64
...@@ -80,7 +80,7 @@ IINSTALL := $(IPATH)/$(ISRCS) ...@@ -80,7 +80,7 @@ IINSTALL := $(IPATH)/$(ISRCS)
LINSTALL := $(LPATH)/$(LNAMES) LINSTALL := $(LPATH)/$(LNAMES)
#pour éviter à ce que make soit confu si je met un fichier nommé "all", "clean" ou "totalClean" dans ce repertoire #pour éviter à ce que make soit confu si je met un fichier nommé "all", "clean" ou "totalClean" dans ce repertoire
.PHONY: all clean totalClean .PHONY: all clean unistall check
#les dependences sont executés de gauche à droite #les dependences sont executés de gauche à droite
#il vérifie la dépendance la plus à gauche et vérifie ses dépendances. une fois satisfaites, il passe à la dépendance suivante. #il vérifie la dépendance la plus à gauche et vérifie ses dépendances. une fois satisfaites, il passe à la dépendance suivante.
...@@ -93,9 +93,19 @@ all: $(IINSTALL) $(LINSTALL) $(TARGETS) ...@@ -93,9 +93,19 @@ all: $(IINSTALL) $(LINSTALL) $(TARGETS)
clean: clean:
$(RM) $(OBJS) $(LOBJS) $(LTARGETS) $(RM) $(OBJS) $(LOBJS) $(LTARGETS)
totalClean: clean unistall: clean
sudo $(RM) $(LINSTALL) $(LINSTALL).$(VMAJ) $(LINSTALL).$(VMAJ).$(VMIN).$(VPAT) $(IINSTALL) $(TARGETS) sudo $(RM) $(LINSTALL) $(LINSTALL).$(VMAJ) $(LINSTALL).$(VMAJ).$(VMIN).$(VPAT) $(IINSTALL) $(TARGETS)
check:
@echo CC: $(CC) RM: $(RM) LN: $(LN) INSTALL: $(INSTALL)
@echo CFLAGS: $(CFLAGS) LFLAGS: $(LFLAGS) MFLAGS: $(MFLAGS)
@echo LSRCS: $(LSRCS) ISRCS: $(ISRCS) SRCS: $(SRCS)
@echo OBJS: $(OBJS) LOBJS: $(LOBJS)
@echo VMAJ: $(VMAJ) VMIN: $(VMIN) VPAT: $(VPAT)
@echo prefix: $(prefix) LPATH: $(LPATH) IPATH: $(IPATH)
@echo LNAMES: $(LNAMES) SONAMES: $(SONAMES)
@echo LTARGETS: $(LTARGETS) TARGETS: $(TARGETS)
@echo IINSTALL: $(IINSTALL) LINSTALL: $(LINSTALL)
$(IINSTALL): $(ISRCS) $(IINSTALL): $(ISRCS)
sudo $(INSTALL) --mode=444 $< $@ sudo $(INSTALL) --mode=444 $< $@
...@@ -128,3 +138,4 @@ $(OBJS): $(SRCS) ...@@ -128,3 +138,4 @@ $(OBJS): $(SRCS)
#$^ sont toutes les dépendances #$^ sont toutes les dépendances
#$@ sont toutes les cibles #$@ sont toutes les cibles
$(CC) $(CFLAGS) -c $^ -o $@ $(CC) $(CFLAGS) -c $^ -o $@
...@@ -29,12 +29,15 @@ size_t base64_encoded_size(size_t binlen){ ...@@ -29,12 +29,15 @@ size_t base64_encoded_size(size_t binlen){
return ret; return ret;
} }
int bin_to_base64(const char* src, size_t len_src, char* dst, size_t len_dst, enum64 charset){ int bin_to_base64(const char* src, size_t len_src, char** dst, size_t len_dst, enum64 charset){
size_t i; size_t i;
size_t j; size_t j;
size_t v; size_t v;
char* used_set; char* used_set;
free(*dst);
if (src == NULL || len_src == 0 || len_dst == 0) if (src == NULL || len_src == 0 || len_dst == 0)
return -1; return -1;
...@@ -46,27 +49,31 @@ int bin_to_base64(const char* src, size_t len_src, char* dst, size_t len_dst, en ...@@ -46,27 +49,31 @@ int bin_to_base64(const char* src, size_t len_src, char* dst, size_t len_dst, en
return -1; return -1;
} }
dst = malloc(len_dst); *dst = (char*)malloc(len_dst+1);
dst[len_dst] = '\0'; if (*dst == NULL){
return -1;
}
*dst[len_dst] = '\0';
for (i=0, j=0; i<len_src; i+=3, j+=4) { for (i=0, j=0; i<len_src; i+=3, j+=4) {
v = src[i]; v = src[i];
v = i+1 < len_src ? v << 8 | src[i+1] : v << 8; v = i+1 < len_src ? v << 8 | src[i+1] : v << 8;
v = i+2 < len_src ? v << 8 | src[i+2] : v << 8; v = i+2 < len_src ? v << 8 | src[i+2] : v << 8;
dst[j] = used_set[(v >> 18) & 0x3F]; *dst[j] = used_set[(v >> 18) & 0x3F];
dst[j+1] = used_set[(v >> 12) & 0x3F]; *dst[j+1] = used_set[(v >> 12) & 0x3F]; //envoie un segFault, cela doit être dû à l'affectation edit: j'ai compris que c'est à cause du pointeur, *dst[1] envoie au premier charactère de src
if (i+1 < len_src) { if (i+1 < len_src) {
dst[j+2] = used_set[(v >> 6) & 0x3F]; *dst[j+2] = used_set[(v >> 6) & 0x3F];
} else { } else {
dst[j+2] = pad; *dst[j+2] = pad;
} }
if (i+2 < len_src) { if (i+2 < len_src) {
dst[j+3] = used_set[v & 0x3F]; *dst[j+3] = used_set[v & 0x3F];
} else { } else {
dst[j+3] = pad; *dst[j+3] = pad;
} }
} }
return 0; return 0;
} }
...@@ -21,7 +21,7 @@ typedef enum { ...@@ -21,7 +21,7 @@ typedef enum {
}enum64; }enum64;
//TODO: implementer le décodage //TODO: implementer le décodage
extern int bin_to_base64(const char* src, size_t len_src, char* dst, size_t len_dst, enum64 charset); extern int bin_to_base64(const char* src, size_t len_src, char** dst, size_t len_dst, enum64 charset);
//extern int base64_to_bin(const char* src, size_t len_src, char* dst, size_t len_dst, enum64 charset); //extern int base64_to_bin(const char* src, size_t len_src, char* dst, size_t len_dst, enum64 charset);
extern size_t base64_encoded_size(size_t binlen); extern size_t base64_encoded_size(size_t binlen);
...@@ -29,3 +29,4 @@ extern size_t base64_encoded_size(size_t binlen); ...@@ -29,3 +29,4 @@ extern size_t base64_encoded_size(size_t binlen);
#endif /*base64.h*/ #endif /*base64.h*/
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
#include <base64.h> #include <base64.h>
int main(void){ int main(void){
char* enc = NULL;
char* data ="waaa"; char* data ="waaa";
char* enc;
int verif; int verif;
verif = bin_to_base64(data, strlen(data), enc, base64_encoded_size(strlen(data)), URL); verif = bin_to_base64(data, strlen(data), &enc, base64_encoded_size(strlen(data)), URL);
//enc devrais être egal à "d2FhYQ==" //enc devrais être egal à "d2FhYQ=="
//mais il est egal à NULL //mais il est egal à NULL
...@@ -33,3 +33,4 @@ int main(void){ ...@@ -33,3 +33,4 @@ int main(void){
return 0; return 0;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment