mirror of
https://github.com/fumiama/simple-dict.git
synced 2026-06-05 02:00:25 +08:00
fix: md5 comparing
This commit is contained in:
32
crypto.h
32
crypto.h
@@ -37,17 +37,27 @@ static const uint32_t sumtable[0x10] = CRYPTO_SUMTABLE;
|
||||
|
||||
static uint8_t seqs[THREADCNT]; // 消息序号
|
||||
|
||||
static inline int is_md5_equal(uint8_t* digest, uint8_t* digest2) {
|
||||
#ifdef CPUBIT64
|
||||
return (digest[0] == digest2[0]) &&
|
||||
(digest[1] == digest2[1]);
|
||||
#else
|
||||
return (digest[0] == digest2[0]) &&
|
||||
(digest[1] == digest2[1]) &&
|
||||
(digest[2] == digest2[2]) &&
|
||||
(digest[3] == digest2[3]);
|
||||
#endif
|
||||
#ifdef CPUBIT64
|
||||
static inline int is_md5_equal(uint64_t* digest, uint64_t* digest2) {
|
||||
return (digest[0] == digest2[0]) && (digest[1] == digest2[1]);
|
||||
}
|
||||
static inline int is_empty_md5(uint64_t* digest) {
|
||||
return (digest[0] == (uint64_t)0) && (digest[1] == (uint64_t)0);
|
||||
}
|
||||
#else
|
||||
static inline int is_md5_equal(uint32_t* digest, uint32_t* digest2) {
|
||||
return (digest[0] == digest2[0]) &&
|
||||
(digest[1] == digest2[1]) &&
|
||||
(digest[2] == digest2[2]) &&
|
||||
(digest[3] == digest2[3]);
|
||||
}
|
||||
static inline int is_empty_md5(uint32_t* digest) {
|
||||
return (digest[0] == (uint32_t)0) &&
|
||||
(digest[1] == (uint32_t)0) &&
|
||||
(digest[2] == (uint32_t)0) &&
|
||||
(digest[3] == (uint32_t)0);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void init_crypto() {
|
||||
srand(time(NULL));
|
||||
@@ -173,7 +183,7 @@ static int cmdpacket_decrypt(cmdpacket_t p, int index, const char pwd[64]) {
|
||||
putchar('\n');
|
||||
#endif
|
||||
|
||||
if(is_md5_equal((uint8_t*)datamd5, p->md5)) {
|
||||
if(is_md5_equal((uint64_t*)datamd5, (uint64_t*)p->md5)) {
|
||||
seqs[index]++;
|
||||
memcpy(p->data, out, p->datalen);
|
||||
return 0;
|
||||
|
||||
11
server.c
11
server.c
@@ -402,7 +402,10 @@ ERR_INSERT_ITEM:
|
||||
}
|
||||
|
||||
static int s3_set_data(thread_timer_t *timer) {
|
||||
if(!setdicts[timer->index].data[0]) return send_data(timer->accept_fd, timer->index, ACKERRO, "erro", 4);
|
||||
if(is_empty_md5((uint64_t*)setdicts[timer->index].data)) {
|
||||
puts("Set data error: key md5 is empty");
|
||||
return send_data(timer->accept_fd, timer->index, ACKERRO, "erro", 4);
|
||||
}
|
||||
FILE *fp = open_dict(timer->index, 0);
|
||||
if(fp == NULL) return send_data(timer->accept_fd, timer->index, ACKERRO, "erro", 4);
|
||||
|
||||
@@ -410,8 +413,10 @@ static int s3_set_data(thread_timer_t *timer) {
|
||||
#ifdef DEBUG
|
||||
printf("Set data size: %u\n", datasize);
|
||||
#endif
|
||||
if(datasize <= 0 || datasize > sizeof(setdicts[timer->index].data))
|
||||
if(datasize <= 0 || datasize > sizeof(setdicts[timer->index].data)) {
|
||||
puts("Set data error: invalid datasize");
|
||||
return send_data(timer->accept_fd, timer->index, ACKERRO, "erro", 4);
|
||||
}
|
||||
|
||||
int r;
|
||||
pthread_cleanup_push((void*)&close_dict, (void*)(uintptr_t)timer->index);
|
||||
@@ -452,7 +457,7 @@ static int s3_set_data(thread_timer_t *timer) {
|
||||
memcpy(setdict->data, timer->dat, timer->numbytes);
|
||||
|
||||
if(insert_item(fp, setdict, strlen(setdict->key)+1, datasize)) {
|
||||
fprintf(stderr, "Error set data: dict[%s]=%s\n", setdict->key, timer->dat);
|
||||
fprintf(stderr, "Error setting data: dict[%s]=%s\n", setdict->key, timer->dat);
|
||||
r = send_data(timer->accept_fd, timer->index, ACKERRO, "erro", 4);
|
||||
} else {
|
||||
printf("Set dict[%s]=%s\n", setdict->key, timer->dat);
|
||||
|
||||
Reference in New Issue
Block a user