[hackers] [ii] minor changes, fix fd leak due to case insensitive channel name comparison, fix treatment of raw irc commands (thanks samurai) || Nico Golde

From: <hg_AT_suckless.org>
Date: Mon, 24 Jan 2011 15:47:30 +0000 (UTC)

changeset: 84:4c6892284a9a
tag: 1.5
user: Nico Golde <nion_AT_suckless.org>
date: Mon Jan 24 16:46:25 2011 +0100
files: CHANGES config.mk ii.c
description:
minor changes, fix fd leak due to case insensitive channel name comparison, fix treatment of raw irc commands (thanks samurai)

diff -r 432e7812270f -r 4c6892284a9a CHANGES
--- a/CHANGES Mon Jan 24 16:13:04 2011 +0100
+++ b/CHANGES Mon Jan 24 16:46:25 2011 +0100
@@ -1,3 +1,10 @@
+1.5 (2011-01-24):
+ - fix channel name comparison in add_channel(), compare lowercase
+ to prevent leaking file descriptors in the long run => Thanks samurai!
+ - only handle commands ii explicitely understands and treat the rest
+ as raw irc (only worked for raw commands in capital lettersin the past) => Thanks samurai!
+ - minor changes
+
 1.4 (2008-08-09):
     - fix directory traversal on servers that support SAJOIN
       NOTE: not marking as security relevant as it is only possible to
diff -r 432e7812270f -r 4c6892284a9a config.mk
--- a/config.mk Mon Jan 24 16:13:04 2011 +0100
+++ b/config.mk Mon Jan 24 16:46:25 2011 +0100
@@ -12,7 +12,7 @@
 
 INCDIR = ${PREFIX}/include
 LIBDIR = ${PREFIX}/lib
-VERSION = 1.4
+VERSION = 1.5
 
 # includes and libs
 INCLUDES = -I. -I${INCDIR} -I/usr/include
diff -r 432e7812270f -r 4c6892284a9a ii.c
--- a/ii.c Mon Jan 24 16:13:04 2011 +0100
+++ b/ii.c Mon Jan 24 16:46:25 2011 +0100
@@ -1,8 +1,7 @@
-/*
- * (C)opyright MMV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
- * (C)opyright MMV-MMVII Nico Golde <nico at ngolde dot de>
- * See LICENSE file for license details.
- */
+/* (C)opyright MMV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
+ * (C)opyright MMV-MMXI Nico Golde <nico at ngolde dot de>
+ * See LICENSE file for license details. */
+
 #include <errno.h>
 #include <netdb.h>
 #include <sys/types.h>
@@ -47,7 +46,7 @@
         fprintf(stderr, "%s",
                         "ii - irc it - " VERSION "\n"
                         "(C)opyright MMV-MMVI Anselm R. Garbe\n"
- "(C)opyright MMV-MMVII Nico Golde\n"
+ "(C)opyright MMV-MMXI Nico Golde\n"
                         "usage: ii [-i <irc dir>] [-s <host>] [-p <port>]\n"
                         " [-n <nick>] [-k <password>] [-f <fullname>]\n");
         exit(EXIT_SUCCESS);
@@ -82,16 +81,16 @@
 
 static int get_filepath(char *filepath, size_t len, char *channel, char *file) {
         if(channel) {
- if(!snprintf(filepath, len, "%s/%s", path, striplower(channel)))
+ if(!snprintf(filepath, len, "%s/%s", path, channel))
                         return 0;
                 create_dirtree(filepath);
- return snprintf(filepath, len, "%s/%s/%s", path, striplower(channel), file);
+ return snprintf(filepath, len, "%s/%s/%s", path, channel, file);
         }
         return snprintf(filepath, len, "%s/%s", path, file);
 }
 
 static void create_filepath(char *filepath, size_t len, char *channel, char *suffix) {
- if(!get_filepath(filepath, len, channel, suffix)) {
+ if(!get_filepath(filepath, len, striplower(channel), suffix)) {
                 fprintf(stderr, "%s", "ii: path to irc directory too long\n");
                 exit(EXIT_FAILURE);
         }
@@ -105,9 +104,10 @@
         return open(infile, O_RDONLY | O_NONBLOCK, 0);
 }
 
-static void add_channel(char *name) {
+static void add_channel(char *cname) {
         Channel *c;
         int fd;
+ char *name = striplower(cname);
 
         for(c = channels; c; c = c->next)
                 if(!strcmp(name, c->name))
@@ -234,7 +234,7 @@
                 return;
         }
         message[0] = '\0';
- switch (buf[1]) {
+ if(buf[2] == ' ' || buf[2] == '\0') switch (buf[1]) {
                 case 'j':
                         p = strchr(&buf[3], ' ');
                         if(p) *p = 0;
Received on Mon Jan 24 2011 - 16:47:30 CET

This archive was generated by hypermail 2.2.0 : Mon Jan 24 2011 - 16:48:04 CET