Mercurial > ~mikael > mcabber > hg
diff mcabber/src/server.c @ 26:8588f5a4b638
[/trunk] Changeset 42 by mikael
* Potential bugfixes.
author | mikael |
---|---|
date | Mon, 28 Mar 2005 08:54:43 +0000 |
parents | e88b15cbf2de |
children | 77e6bd2ccde6 |
line wrap: on
line diff
--- a/mcabber/src/server.c Sun Mar 27 20:18:21 2005 +0000 +++ b/mcabber/src/server.c Mon Mar 28 08:54:43 2005 +0000 @@ -29,7 +29,7 @@ { struct pollfd sock_p; sock_p.fd = sock; - sock_p.events = POLLIN | POLLPRI; + sock_p.events = (short int) (POLLIN | POLLPRI); sock_p.revents = 0; poll(&sock_p, 1, 0); @@ -57,10 +57,10 @@ if (!(he = gethostbyname(host))) return 0; else - return (*(u_long *) he->h_addr); + return (*(u_long *) he->h_addr); // XXX Memory leak } - return i; + return (u_long) i; } @@ -114,7 +114,7 @@ { char *stringtosend = malloc(2048); char *response, *aux; - char *idsession = malloc(128); + char *idsession = calloc(64, sizeof(char)); int pos = 0; memset(stringtosend, 0, 2048); @@ -126,6 +126,8 @@ if (!sk_send(sock, stringtosend)) { perror("senddata (server.c:132)"); + free(stringtosend); + free(idsession); return NULL; } response = sk_recv(sock); @@ -133,6 +135,9 @@ /* fprintf(stderr, "Response not valid:\n%s\n\n", response); */ scr_CreatePopup("Error", "Bad answer from the server", 60, 0, NULL); + free(response); + free(idsession); + free(stringtosend); return NULL; } aux = response; @@ -145,6 +150,13 @@ pos++; } aux -= pos; + if (pos > 64-1) { + ut_WriteLog("Bad session ID!\n"); + free(response); + free(idsession); + free(stringtosend); + return NULL; + } strncpy(idsession, aux, pos); free(response); @@ -190,7 +202,9 @@ response = sk_recv(sock); */ scr_TerminateCurses(); - printf("Reinicie cabber!\n\n"); + /* printf("Reinicie cabber!\n\n"); */ + free(idsession); + free(stringtosend); return NULL; } free(response); @@ -212,7 +226,7 @@ int rv; char *str = malloc(1024); - sprintf(str, "<presence><status>%s</status></presence>", type); + sprintf(str, "<presence><status>%.512s</status></presence>", type); if (!(rv = sk_send(sock, str))) { perror("senddata (server.c:199)"); } @@ -237,6 +251,7 @@ strcat(str, "jabber:iq:roster'/></iq>\n"); if (!sk_send(sock, str)) { perror("senddata (server.c:222)"); + free(str); return NULL; } free(str); @@ -263,6 +278,8 @@ from, to, utf8inputline); if (!sk_send(sock, stringtosend)) { perror("senddata (server.c:247)"); + free(stringtosend); + free(utf8inputline); return -1; }