/*
* Dolda Connect - Modular multiuser Direct Connect-style client
- * Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com)
+ * Copyright (C) 2004 Fredrik Tolf <fredrik@dolda2000.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
return(NULL);
if((transfer->endpos >= 0) && (transfer->curpos + *size >= transfer->endpos))
{
- *size = transfer->endpos - transfer->curpos;
- buf = srealloc(buf, *size);
+ if((*size = transfer->endpos - transfer->curpos) == 0) {
+ free(buf);
+ buf = NULL;
+ } else {
+ buf = srealloc(buf, *size);
+ }
}
transfer->curpos += *size;
bytesupload += *size;
errno = EACCES;
return(-1);
}
- filtername = findfile(icswcstombs(confgetstr("transfer", "filter"), NULL, NULL), NULL, 0);
+ filtername = findfile("dc-filter", pwent->pw_dir, 0);
if(filtername == NULL)
- filtername = findfile("dc-filter", pwent->pw_dir, 0);
+ filtername = findfile(icswcstombs(confgetstr("transfer", "filter"), NULL, NULL), NULL, 0);
if(filtername == NULL)
{
flog(LOG_WARNING, "could not find filter for user %s", pwent->pw_name);
{
argv = NULL;
argvsize = argvdata = 0;
- buf = sprintf2("%i", transfer->size);
+ buf = sprintf2("%zi", transfer->size);
addtobuf(argv, filtername);
addtobuf(argv, filename);
addtobuf(argv, buf);