Skip to content

Commit d23d5fe

Browse files
committed
fix the bug that only base64 encoding exists in c2profile
1 parent 83bca85 commit d23d5fe

File tree

1 file changed

+36
-8
lines changed

1 file changed

+36
-8
lines changed

main.go

100644100755
Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,10 @@ func fmt_profile_endata(endata_name string, metadata []parser.MultiParam) (strin
347347
// fmt.Println("skip encode....")
348348
c_encode = ""
349349
c_free = ""
350-
last_varname = endata_name
350+
c_encode = "raw_data_t "+endata_name+"_t = {"+endata_name+", 0};\n"
351+
c_encode += endata_name+"_t.size = strlen("+endata_name+");\n"
352+
c_encode += "raw_data_t *"+endata_name+"_p = &"+endata_name+"_t;\n"
353+
last_varname = endata_name+"_p"
351354
} else {
352355
c_encode = "raw_data_t *raw_data_"+endata_name+" = base64_de("+endata_name+", strlen("+endata_name+"));\n" + c_encode
353356
c_free = "safe_free(&raw_data_"+endata_name+");\n" + c_free
@@ -371,6 +374,23 @@ func fmt_profile_endata(endata_name string, metadata []parser.MultiParam) (strin
371374
return c_encode, c_free, data_storetype
372375
}
373376

377+
func get_match_string(mini_match_length int, subdata string, profiledata string, is_predata bool) string{
378+
match_str := ""
379+
for {
380+
if (is_predata) {
381+
match_str = subdata[len(subdata)-mini_match_length:]
382+
} else {
383+
match_str = subdata[0:mini_match_length]
384+
}
385+
if strings.Count(profiledata, match_str) == 1 {
386+
break
387+
} else {
388+
mini_match_length += 1
389+
}
390+
}
391+
return match_str
392+
}
393+
374394
func fmt_profile_dedata(dedata_name string, metadata []parser.MultiParam) (string, string, string) {
375395
c_encode := ""
376396
c_free := ""
@@ -414,23 +434,31 @@ func fmt_profile_dedata(dedata_name string, metadata []parser.MultiParam) (strin
414434
last_varname = "raw_data"
415435
}
416436
c_payload := ""
437+
profile_data := ""
417438
if (prepend_data != "") {
418-
prepend_data = prepend_data[len(prepend_data)-6:]
439+
profile_data = prepend_data
440+
prepend_data = get_match_string(6, prepend_data, profile_data, true)
419441
c_payload += fmt_go_2_c("pre_data", prepend_data)
420442
} else {
421443
// fmt.Println("[error]: c2profile -> http-get{ Server { Output { prepend: not found } } }")
422444
}
423445
if (append_data != "") {
424-
append_data = append_data[0:6]
446+
profile_data += append_data
447+
append_data = get_match_string(6, append_data, profile_data, false)
425448
c_payload += fmt_go_2_c("add_data", append_data)
426449
} else {
427450
// fmt.Println("[error]: c2profile -> http-get{ Server { Output { prepend: not found } } }")
428451
}
429452

430-
c_payload += "raw_data_t *raw_data = find_payload(rawData, rawData_len, c_pre_data, c_add_data);\n\n"
453+
c_payload += "raw_data_t *raw_data = find_payload(rawData, rawData_len, c_pre_data, c_add_data);\n\n"
431454

432455
c_encode = c_payload + c_encode
433-
c_encode += "\nraw_data_t *en_out = base64_en("+last_varname+"->data, "+last_varname+"->size);\n"
456+
if (last_varname == "raw_data") {
457+
c_encode += "\nraw_data_t *en_out = raw_data;\n"
458+
} else {
459+
c_encode += "\nraw_data_t *en_out = base64_en("+last_varname+"->data, "+last_varname+"->size);\n"
460+
c_free += "safe_free(&raw_data);\n"
461+
}
434462

435463
return c_encode, c_free, data_storetype
436464
}
@@ -531,7 +559,7 @@ func fmt_profile_get_client(http_get *parser.HttpGet) string{
531559
c_code += "\n"+c_free
532560
c_code += "\n"
533561
c_code += "*outputData_len = http_body->size;\n"
534-
c_code += "*outputData = http_body->data;\n"
562+
c_code += "*outputData = http_body->data;\n"
535563

536564
fmt_c_code := ""
537565
for _, i := range strings.Split(c_code, "\n") {
@@ -549,7 +577,7 @@ func fmt_profile_get_server(http_get *parser.HttpGet) string{
549577
c_code += "\n"+c_free
550578
c_code += "\n"
551579
c_code += "*outputData_len = en_out->size;\n"
552-
c_code += "*outputData = en_out->data;\n"
580+
c_code += "*outputData = en_out->data;\n"
553581

554582
fmt_c_code := ""
555583
for _, i := range strings.Split(c_code, "\n") {
@@ -655,7 +683,7 @@ func fmt_profile_post_client(http_post *parser.HttpPost) string{
655683
c_code += c_free
656684
c_code += "\n"
657685
c_code += "*outputData_len = http_body->size;\n"
658-
c_code += "*outputData = http_body->data;\n"
686+
c_code += "*outputData = http_body->data;\n"
659687

660688
fmt_c_code := ""
661689
for _, i := range strings.Split(c_code, "\n") {

0 commit comments

Comments
 (0)