minor changes, fix fd leak due to case insensitive channel name comparison, fix treatment of raw irc commands (thanks samurai)
This commit is contained in:
parent
566fa01e47
commit
e048dac3df
7
CHANGES
7
CHANGES
@ -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
|
||||
|
@ -12,7 +12,7 @@ DESTDIR =
|
||||
|
||||
INCDIR = ${PREFIX}/include
|
||||
LIBDIR = ${PREFIX}/lib
|
||||
VERSION = 1.4
|
||||
VERSION = 1.5
|
||||
|
||||
# includes and libs
|
||||
INCLUDES = -I. -I${INCDIR} -I/usr/include
|
||||
|
22
ii.c
22
ii.c
@ -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 @@ static void usage() {
|
||||
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 void create_dirtree(const char *dir) {
|
||||
|
||||
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 @@ static int open_channel(char *name) {
|
||||
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 @@ static void proc_channels_input(Channel *c, char *buf) {
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user