From 0b6b032e0293ebd62c146f27622487bb87c7b773 Mon Sep 17 00:00:00 2001 From: Patrick Hornecker Date: Fri, 19 Feb 2010 13:54:27 +0100 Subject: few bugs fixed, redrawing of bubbels changed --- friendfinder/receiver.c | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) (limited to 'friendfinder/receiver.c') diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c index 1295983..ee02249 100644 --- a/friendfinder/receiver.c +++ b/friendfinder/receiver.c @@ -8,6 +8,7 @@ #include "draw_user.h" #include "read_file.h" #include "receiver.h" +#include "cryptossl.h" static irc_session_t *session; irc_callbacks_t callbacks; @@ -110,16 +111,16 @@ int get_sender_array_pos(char* nick) { for (int i = 0; i < s_sender_size; i++) { - if (s_sender[i]->is_init == 1 && strlen(s_sender[i]->nick) == 0)//strcmp(s_sender[i]->nick, nick) == 0) + if (s_sender[i]->is_init == 0)// && strcmp(s_sender[i]->nick, nick) != 0) { + s_sender[i]->is_init = 1; + strcpy(s_sender[i]->nick, nick); + return i; } - if (s_sender[i]->is_init == 0 && strcmp(s_sender[i]->nick, nick) != 0) + else if (s_sender[i]->is_init == 1 && strcmp(s_sender[i]->nick, nick) == 0) { - s_sender[i]->is_init = 1; - memcpy(s_sender[i]->nick, nick, strlen(nick)); - return i; } } @@ -157,8 +158,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted) if (_sender->lat_first_set == 1 && _sender->lat_second_set == 1) { - memcpy(_sender->lat, _sender->lat_first, strlen(_sender->lat_first)); - + memcpy(_sender->lat, _sender->lat_first, sizeof(_sender->lat_first)); strcat(_sender->lat, _sender->lat_second); _sender->lat_set = 1; @@ -171,8 +171,9 @@ void repair_position(struct sender *_sender, unsigned char *decrypted) if (_sender->lon_first_set == 1 && _sender->lon_second_set == 1) { - memcpy(_sender->lon, _sender->lon_first, strlen(_sender->lon_first)); + memcpy(_sender->lon, _sender->lon_first, sizeof(_sender->lon_first)); strcat(_sender->lon, _sender->lon_second); + _sender->lon_set = 1; _sender->lon_first_set = 0; _sender->lon_second_set = 0; @@ -181,7 +182,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted) _sender->lon_second[0] = '\0'; } - printf("lon_set: %i \n", _sender->lon_set); +/* printf("lon_set: %i \n", _sender->lon_set); printf("lon: %s \n", _sender->lon); printf("lat_set: %i \n", _sender->lat_set); printf("lat: %s \n", _sender->lat); @@ -196,7 +197,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted) printf("first_lat: %s \n", _sender->lat_first); printf("second_lat_set: %i \n", _sender->lat_second_set); printf("second_lat: %s \n", _sender->lat_second); - printf("====================== \n"); + printf("====================== \n");*/ } @@ -216,7 +217,8 @@ void get_position(irc_session_t * session, const char * event, const char * orig disconnect_receiver(session, event, origin, params, count); unsigned char *decrypted; - + unsigned char *encrypted_base64; + char *sender_org = (char*) malloc(username_length + 1); irc_target_get_nick(origin, sender_name, sizeof(sender_name)); @@ -227,28 +229,36 @@ void get_position(irc_session_t * session, const char * event, const char * orig && strcmp(params[1], "ack") != 0) { int pos = get_sender_array_pos(sender_org); - + if (s_sender[pos]->lat_set == 0) { + encrypted_base64 = (char*) malloc(sizeof(char) * 50); decrypted = (char*) malloc(sizeof(char) * 7); - BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT); + from_base64(params[1], strlen(params[1]), encrypted_base64, 50); + BF_ecb_encrypt(encrypted_base64, decrypted, &key, BF_DECRYPT); + decrypted[strlen(decrypted)] = '\0'; repair_position(s_sender[pos], decrypted); + free(encrypted_base64); free(decrypted); } else if (s_sender[pos]->lon_set == 0) { + encrypted_base64 = (char*) malloc(sizeof(char) * 50); decrypted = (char*) malloc(sizeof(char) * 7); - BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT); + from_base64(params[1], strlen(params[1]), encrypted_base64, 50); + BF_ecb_encrypt(encrypted_base64, decrypted, &key, BF_DECRYPT); + decrypted[strlen(decrypted)] = '\0'; repair_position(s_sender[pos], decrypted); + free(encrypted_base64); free(decrypted); } @@ -291,8 +301,7 @@ void get_position(irc_session_t * session, const char * event, const char * orig void init_sender_struct(int number) { -// s_sender = (struct sender(*)[number]) malloc(sizeof(struct sender*) * number); - s_sender = (struct sender(*)[number]) malloc(sizeof(struct sender) * number); + s_sender = (struct sender**) malloc(sizeof(struct sender*) * number); s_sender_size = number; @@ -301,13 +310,13 @@ void init_sender_struct(int number) s_sender[i] = (struct sender*) malloc(sizeof(struct sender)); s_sender[i]->nick = (char*) malloc(sizeof(char) * 20); - s_sender[i]->nick[0] = '\0'; + // s_sender[i]->nick[0] = '\0'; s_sender[i]->lat = (char*) malloc(sizeof(char) * 10); - s_sender[i]->lat[0] = '\0'; +// s_sender[i]->lat[0] = '\0'; s_sender[i]->lon = (char*) malloc(sizeof(char) * 10); - s_sender[i]->lon[0] = '\0'; +// s_sender[i]->lon[0] = '\0'; // s_sender[i]->is_init = (int) malloc(sizeof(int)); s_sender[i]->is_init = 0; -- cgit v1.2.3-55-g7522