이 코드는 코드 조각이 큰 프로젝트의 일부이기 때문에 설명하기가 약간 어렵습니다. 내가 할 수있는 최선의 방법으로 문제를 설명하려고 노력할 것이다. 의다른 데이터가있는 두 포인터의 Memcmp
625b70a9659b2fe9ba76ea26d3cfb6126bae4a48b4997548b26d9a101e682bc3
625b70a9659b2fe9ba76ea26d3cfb6126bae4a48b4997548b26d9a101e682bc3
MEMCMP value: -44
정의를 다음과 같이
나는 두 개의 파일
나는 다음과 같은 코드를 실행하는 기능에서FILE *f,*m;
f=fopen("/home/machine/decoder.txt","a+");
m=fopen("/home/machine/offset.txt","a+");
,
char *c;
int i=0;
c = malloc(sizeof(SslDecoder));
//Pick a value from "decoder" file and compare it to a variable in the function
while (fgets(c, sizeof(SslDecoder), f) != NULL) {
//Print its value to offset file
fprintf(m,"%s\n",c);
// Print value of another variable to offset file.
for(i=0;i<32;i++){
fprintf(m,"%02x",ssl->client_random.data[i]);
}
fprintf(m,"\n");
//Compare the memory in the pointers.
int check = memcmp(c,ssl->client_random.data,32);
fprintf(m,"MEMCMP value: %d\n",check);
}
offset.txt에 인쇄 된 값
은이 client_random 및 ssl은 다음과 같습니다. - typedef struct _StringInfo {
guchar *data; /* Backing storage which may be larger than data_len */
guint data_len; /* Length of the meaningful part of data */
} StringInfo;
typedef struct _SslDecryptSession {
StringInfo server_random;
StringInfo client_random;
StringInfo master_secret;
guchar _client_data_for_iv[24];
StringInfo client_data_for_iv;
gint state;
SslCipherSuite cipher_suite;
SslDecoder *server;
SslDecoder *client;
SslSession session;
} SslDecryptSession;
memcmp의 값이 0이 아닌 이유를 모르겠습니다. 포인터에 저장된 데이터가 다르게 인코딩 된 것으로 판단되지만이 경우 값을 비교하는 방법은 무엇입니까? 데이터가 16 진수 형식인지 또는 포인터 중 하나의 원시/아스키 데이터인지는 알 수 없습니다.
코드를 들여 씁니다. –