{ "metadata": { "target_code": "int a = 10; int b = 20; int c = a + b; printf(\"sum=%d, a=%d, b=%d\", c, a, b);", "passing_method": "true_parameter_multi", "call_chain": [ "crypto_get_certificate_data", "crypto_cert_fingerprint", "crypto_cert_fingerprint_by_hash", "crypto_cert_hash" ] }, "fused_functions": { "crypto_get_certificate_data": "rdpCertificateData* crypto_get_certificate_data(X509* xcert, const char* hostname, UINT16 port)\n{\n\tchar* issuer;\n\tchar* subject;\n\tchar* fp;\n\trdpCertificateData* certdata;\n\n\tint a = 10;\n\tint b = 20;\n\n\tfp = crypto_cert_fingerprint(xcert, &a, &b);\n\n\tif (!fp)\n\t\treturn NULL;\n\n\tissuer = crypto_cert_issuer(xcert);\n\tsubject = crypto_cert_subject(xcert);\n\tcertdata = certificate_data_new(hostname, port, issuer, subject, fp);\n\tfree(subject);\n\tfree(issuer);\n\tfree(fp);\n\treturn certdata;\n}", "crypto_cert_fingerprint": "char* crypto_cert_fingerprint(X509* xcert, int* p_a, int* p_b)\n{\n\tchar* fp = crypto_cert_fingerprint_by_hash(xcert, \"sha256\", p_a, p_b);\n\treturn fp;\n}", "crypto_cert_fingerprint_by_hash": "char* crypto_cert_fingerprint_by_hash(X509* xcert, const char* hash, int* p_a, int* p_b)\n{\n\tUINT32 fp_len, i;\n\tBYTE* fp;\n\tchar* p;\n\tchar* fp_buffer;\n\n\tint c = *p_a + *p_b;\n\n\tfp = crypto_cert_hash(xcert, hash, &fp_len, &c);\n\tif (!fp)\n\t\treturn NULL;\n\n\tfp_buffer = calloc(fp_len * 3 + 1, sizeof(char));\n\tif (!fp_buffer)\n\t\tgoto fail;\n\n\tp = fp_buffer;\n\n\tfor (i = 0; i < (fp_len - 1); i++)\n\t{\n\t\tsprintf_s(p, (fp_len - i) * 3, \"%02\" PRIx8 \":\", fp[i]);\n\t\tp = &fp_buffer[(i + 1) * 3];\n\t}\n\n\tsprintf_s(p, (fp_len - i) * 3, \"%02\" PRIx8 \"\", fp[i]);\nfail:\n\tfree(fp);\n\n\treturn fp_buffer;\n}", "crypto_cert_hash": "char* crypto_cert_hash(X509* xcert, const char* hash, UINT32* fp_len, int* p_c)\n{\n\tBYTE* fp;\n\n\tint a = *p_c - 20;\n\tint b = *p_c - 10;\n\n\tprintf(\"sum=%d, a=%d, b=%d\", *p_c, a, b);\n\n\tfp = crypto_cert_compute_hash(xcert, hash, fp_len);\n\n\treturn fp;\n}" } }