Hylafax Developers Mailing List Archives
|
[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
[hylafax-devel] Security patches for hylafax-v4.0pl2
I had a bit of time last weekend, so in the interest of patching the setuid
uucp buffer overflow in faxalter and getting the FreeBSD/OpenBSD port
current, I did a beginnings of a security audit on hylafax-v4.0pl2. Below
are patches for various unbounded string copies in the source.
The functions that I checked are:
strcpy
strcat
sprintf
vsprintf
There were a few instances of possible unbounded character string copies
that I did not alter. The fix was non-obvious and buried deep in support
functions. I also did not check any possible race conditions.
What is the status of hylafax-v4.0pl2? Is any work being done on it? Is
another patch level forthcoming? Or is the effort being targeted to
4.1beta? Would my time be better spent looking at the latter?
diff -cr ./faxalter/faxalter.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxalter/faxalter.c++
*** ./faxalter/faxalter.c++ Sat Feb 14 05:48:38 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxalter/faxalter.c++ Fri
Jun 9 15:01:00 2000
***************
*** 185,191 ****
va_list ap;
va_start(ap, fmt0);
char fmt[1024];
! sprintf(fmt, "%s %s\n", groups ? "JGPARM" : "JPARM", fmt0);
script.append(fxStr::vformat(fmt, ap));
va_end(ap);
}
--- 185,191 ----
va_list ap;
va_start(ap, fmt0);
char fmt[1024];
! snprintf(fmt, 1024, "%s %s\n", groups ? "JGPARM" : "JPARM", fmt0);
script.append(fxStr::vformat(fmt, ap));
va_end(ap);
}
diff -cr ./faxd/ClassModem.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/ClassModem.c++
*** ./faxd/ClassModem.c++ Sat Feb 14 05:49:16 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/ClassModem.c++ Fri
Jun 9 15:45:00 2000
***************
*** 169,175 ****
{
protoTrace("DIAL %s", number);
char buf[256];
! sprintf(buf, (const char*) conf.dialCmd, number);
emsg = "";
CallStatus cs = (atCmd(buf, AT_NOTHING) ? dialResponse(emsg) : FAILURE);
if (cs != OK && emsg == "")
--- 169,175 ----
{
protoTrace("DIAL %s", number);
char buf[256];
! snprintf(buf, 256, (const char*) conf.dialCmd, number);
emsg = "";
CallStatus cs = (atCmd(buf, AT_NOTHING) ? dialResponse(emsg) : FAILURE);
if (cs != OK && emsg == "")
diff -cr ./faxd/FaxMachineLog.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/FaxMachineLog.c++
*** ./faxd/FaxMachineLog.c++ Sat Feb 14 05:49:21 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/FaxMachineLog.c++ Fri
Jun 9 15:42:56 2000
***************
*** 77,83 ****
timeval tv;
(void) gettimeofday(&tv, 0);
strftime(buf, sizeof (buf), "%h %d %T", localtime((time_t*)
&tv.tv_sec));
! sprintf(buf+strlen(buf), ".%02u: [%5d]: ", tv.tv_usec / 10000, pid);
/*
* Copy format string into a local buffer so
* that we can substitute for %m, a la syslog.
--- 77,83 ----
timeval tv;
(void) gettimeofday(&tv, 0);
strftime(buf, sizeof (buf), "%h %d %T", localtime((time_t*)
&tv.tv_sec));
! snprintf(buf+strlen(buf), (16*1024)-strlen(buf), ".%02u: [%5d]: ",
tv.tv_usec / 10000, pid);
/*
* Copy format string into a local buffer so
* that we can substitute for %m, a la syslog.
***************
*** 96,101 ****
fmt.put(fp[0]);
}
fmt.put('\n'); fmt.put('\0');
! vsprintf(buf+strlen(buf), (const char*) fmt, ap);
(void) Sys::write(fd, buf, strlen(buf));
}
--- 96,101 ----
fmt.put(fp[0]);
}
fmt.put('\n'); fmt.put('\0');
! vsnprintf(buf+strlen(buf), (16*1024)-strlen(buf), (const char*) fmt, ap);
(void) Sys::write(fd, buf, strlen(buf));
}
diff -cr ./faxd/FaxRecv.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/FaxRecv.c++
*** ./faxd/FaxRecv.c++ Sat Feb 14 05:49:23 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/FaxRecv.c++ Fri
Jun 9 15:43:55 2000
***************
*** 139,145 ****
* number file to reflect the allocation.
*/
(void) flock(ftmp, LOCK_EX|LOCK_NB);
! sprintf(line, "%u", seqnum);
(void) lseek(fseqf, 0, SEEK_SET);
if (Sys::write(fseqf, line, strlen(line)) != strlen(line) ||
ftruncate(fseqf,strlen(line))) {
--- 139,145 ----
* number file to reflect the allocation.
*/
(void) flock(ftmp, LOCK_EX|LOCK_NB);
! snprintf(line, 16, "%u", seqnum);
(void) lseek(fseqf, 0, SEEK_SET);
if (Sys::write(fseqf, line, strlen(line)) != strlen(line) ||
ftruncate(fseqf,strlen(line))) {
diff -cr ./faxd/FaxRequest.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/FaxRequest.c++
*** ./faxd/FaxRequest.c++ Sat Feb 14 05:49:24 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/FaxRequest.c++ Fri
Jun 9 15:40:06 2000
***************
*** 679,685 ****
FaxRequest::error(const char* fmt0 ...)
{
char fmt[128];
! sprintf(fmt, "%s: line %u: %s", (const char*) qfile, (u_int) lineno,
fmt0);
va_list ap;
va_start(ap, fmt0);
vlogError(fmt, ap);
--- 679,685 ----
FaxRequest::error(const char* fmt0 ...)
{
char fmt[128];
! snprintf(fmt, 128, "%s: line %u: %s", (const char*) qfile, (u_int)
lineno, fmt0);
va_list ap;
va_start(ap, fmt0);
vlogError(fmt, ap);
diff -cr ./faxd/Job.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/Job.c++
*** ./faxd/Job.c++ Sat Feb 14 05:49:32 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/Job.c++ Fri Jun 9
15:39:26 2000
***************
*** 171,177 ****
#define N(a) (sizeof (a) / sizeof (a[0]))
if ((u_int) status >= N(names)) {
static char s[30];
! sprintf(s, "status_%u", (u_int) status);
return (s);
} else
return (names[status]);
--- 171,177 ----
#define N(a) (sizeof (a) / sizeof (a[0]))
if ((u_int) status >= N(names)) {
static char s[30];
! snprintf(s, 30, "status_%u", (u_int) status);
return (s);
} else
return (names[status]);
diff -cr ./faxd/ModemServer.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/ModemServer.c++
*** ./faxd/ModemServer.c++ Sat Feb 14 05:49:34 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/ModemServer.c++ Fri
Jun 9 15:38:47 2000
***************
*** 604,610 ****
} while (ftmp < 0 && errno == EEXIST && --ntry >= 0);
umask(omask);
if (ftmp >= 0) {
! sprintf(line, "%u", seqnum);
(void) lseek(fseqf, 0, SEEK_SET);
if (Sys::write(fseqf, line, strlen(line)) != strlen(line) ||
ftruncate(fseqf,strlen(line)))
--- 604,610 ----
} while (ftmp < 0 && errno == EEXIST && --ntry >= 0);
umask(omask);
if (ftmp >= 0) {
! snprintf(line, 1024, "%u", seqnum);
(void) lseek(fseqf, 0, SEEK_SET);
if (Sys::write(fseqf, line, strlen(line)) != strlen(line) ||
ftruncate(fseqf,strlen(line)))
***************
*** 806,812 ****
va_list ap;
va_start(ap, fmt0);
char fmt[256];
! sprintf(fmt, "MODEM %s", fmt0);
vtraceStatus(FAXTRACE_MODEMOPS, fmt, ap);
va_end(ap);
}
--- 806,812 ----
va_list ap;
va_start(ap, fmt0);
char fmt[256];
! snprintf(fmt, 256, "MODEM %s", fmt0);
vtraceStatus(FAXTRACE_MODEMOPS, fmt, ap);
va_end(ap);
}
diff -cr ./faxd/ServerConfig.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/ServerConfig.c++
*** ./faxd/ServerConfig.c++ Sat Feb 14 05:49:36 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/ServerConfig.c++ Fri
Jun 9 15:18:20 2000
***************
*** 373,381 ****
{
char fmt[128];
if (module != NULL)
! sprintf(fmt, "%s: Warning, %s.", module, fmt0);
else
! sprintf(fmt, "Warning, %s.", fmt0);
vlogError(fmt, ap);
}
--- 373,381 ----
{
char fmt[128];
if (module != NULL)
! snprintf(fmt, 128, "%s: Warning, %s.", module, fmt0);
else
! snprintf(fmt, 128, "Warning, %s.", fmt0);
vlogError(fmt, ap);
}
***************
*** 384,392 ****
{
char fmt[128];
if (module != NULL)
! sprintf(fmt, "%s: Warning, %s.", module, fmt0);
else
! sprintf(fmt, "Warning, %s.", fmt0);
vlogWarning(fmt, ap);
}
--- 384,392 ----
{
char fmt[128];
if (module != NULL)
! snprintf(fmt, 128, "%s: Warning, %s.", module, fmt0);
else
! snprintf(fmt, 128, "Warning, %s.", fmt0);
vlogWarning(fmt, ap);
}
diff -cr ./faxd/faxApp.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/faxApp.c++
*** ./faxd/faxApp.c++ Sat Feb 14 05:49:39 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/faxApp.c++ Fri Jun 9
15:17:18 2000
***************
*** 231,237 ****
logError("fcntl: %m");
}
char msg[4096];
! vsprintf(msg, fmt, ap);
u_int len = strlen(msg)+1;
if (Sys::write(faxqfifo, msg, len) != len) {
if (errno == EBADF || errno == EPIPE) // reader expired
--- 231,237 ----
logError("fcntl: %m");
}
char msg[4096];
! vsnprintf(msg, 4096, fmt, ap);
u_int len = strlen(msg)+1;
if (Sys::write(faxqfifo, msg, len) != len) {
if (errno == EBADF || errno == EPIPE) // reader expired
***************
*** 263,269 ****
faxApp::sendModemStatus(const char* devid, const char* fmt0 ...)
{
char fmt[2*1024];
! sprintf(fmt, "+%s:%s", devid, fmt0);
va_list ap;
va_start(ap, fmt0);
fxBool ok = vsendQueuer(fmt, ap);
--- 263,269 ----
faxApp::sendModemStatus(const char* devid, const char* fmt0 ...)
{
char fmt[2*1024];
! snprintf(fmt, 2048, "+%s:%s", devid, fmt0);
va_list ap;
va_start(ap, fmt0);
fxBool ok = vsendQueuer(fmt, ap);
***************
*** 278,284 ****
faxApp::sendJobStatus(const char* jobid, const char* fmt0 ...)
{
char fmt[2*1024];
! sprintf(fmt, "*%s:%s", jobid, fmt0);
va_list ap;
va_start(ap, fmt0);
fxBool ok = vsendQueuer(fmt, ap);
--- 278,284 ----
faxApp::sendJobStatus(const char* jobid, const char* fmt0 ...)
{
char fmt[2*1024];
! snprintf(fmt, 2048, "*%s:%s", jobid, fmt0);
va_list ap;
va_start(ap, fmt0);
fxBool ok = vsendQueuer(fmt, ap);
***************
*** 293,299 ****
faxApp::sendRecvStatus(const char* devid, const char* fmt0 ...)
{
char fmt[2*1024];
! sprintf(fmt, "@%s:%s", devid, fmt0);
va_list ap;
va_start(ap, fmt0);
fxBool ok = vsendQueuer(fmt, ap);
--- 293,299 ----
faxApp::sendRecvStatus(const char* devid, const char* fmt0 ...)
{
char fmt[2*1024];
! snprintf(fmt, 2048, "@%s:%s", devid, fmt0);
va_list ap;
va_start(ap, fmt0);
fxBool ok = vsendQueuer(fmt, ap);
diff -cr ./faxd/faxQueueApp.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/faxQueueApp.c++
*** ./faxd/faxQueueApp.c++ Sat Feb 14 05:49:42 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/faxQueueApp.c++ Fri
Jun 9 15:13:31 2000
***************
*** 971,980 ****
* -m <maxpages> max pages to generate
* -1|-2 1d or 2d encoding
*/
! char rbuf[20]; sprintf(rbuf, "%u", params.verticalRes());
! char wbuf[20]; sprintf(wbuf, "%u", params.pageWidth());
! char lbuf[20]; sprintf(lbuf, "%d", params.pageLength());
! char mbuf[20]; sprintf(mbuf, "%u", dci.getMaxSendPages());
const char* argv[30];
int ac = 0;
switch (req.op) {
--- 971,980 ----
* -m <maxpages> max pages to generate
* -1|-2 1d or 2d encoding
*/
! char rbuf[20]; snprintf(rbuf, 20, "%u", params.verticalRes());
! char wbuf[20]; snprintf(wbuf, 20, "%u", params.pageWidth());
! char lbuf[20]; snprintf(lbuf, 20, "%d", params.pageLength());
! char mbuf[20]; snprintf(mbuf, 20, "%u", dci.getMaxSendPages());
const char* argv[30];
int ac = 0;
switch (req.op) {
***************
*** 2726,2734 ****
{
char fmt[128];
if (module != NULL)
! sprintf(fmt, "%s: Warning, %s.", module, fmt0);
else
! sprintf(fmt, "Warning, %s.", fmt0);
vlogError(fmt, ap);
}
--- 2726,2734 ----
{
char fmt[128];
if (module != NULL)
! snprintf(fmt, 128, "%s: Warning, %s.", module, fmt0);
else
! snprintf(fmt, 128, "Warning, %s.", fmt0);
vlogError(fmt, ap);
}
***************
*** 2737,2745 ****
{
char fmt[128];
if (module != NULL)
! sprintf(fmt, "%s: Warning, %s.", module, fmt0);
else
! sprintf(fmt, "Warning, %s.", fmt0);
vlogWarning(fmt, ap);
}
--- 2737,2745 ----
{
char fmt[128];
if (module != NULL)
! snprintf(fmt, 128, "%s: Warning, %s.", module, fmt0);
else
! snprintf(fmt, 128, "Warning, %s.", fmt0);
vlogWarning(fmt, ap);
}
diff -cr ./faxd/trigtest.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/trigtest.c++
*** ./faxd/trigtest.c++ Sat Feb 14 05:49:47 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/faxd/trigtest.c++ Fri
Jun 9 15:20:07 2000
***************
*** 296,302 ****
int fd, n;
char msg[256];
! sprintf(fifoName, "client/%u", getpid());
if (Sys::mkfifo(fifoName, 0666) < 0 && errno != EEXIST) {
perror("mkfifo");
exit(-1);
--- 296,302 ----
int fd, n;
char msg[256];
! snprintf(fifoName, 80, "client/%u", getpid());
if (Sys::mkfifo(fifoName, 0666) < 0 && errno != EEXIST) {
perror("mkfifo");
exit(-1);
***************
*** 309,315 ****
unlink(fifoName);
exit(-1);
}
! sprintf(msg, "T%s:N%s", fifoName, trigger);
send(msg, strlen(msg)+1);
for (;;) {
FD_ZERO(&rd);
--- 309,315 ----
unlink(fifoName);
exit(-1);
}
! snprintf(msg, 256, "T%s:N%s", fifoName, trigger);
send(msg, strlen(msg)+1);
for (;;) {
FD_ZERO(&rd);
diff -cr ./hfaxd/HylaFAXServer.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/HylaFAXServer.c++
*** ./hfaxd/HylaFAXServer.c++ Sat Feb 14 05:50:02 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/HylaFAXServer.c++
Fri Jun 9 16:47:47 2000
***************
*** 161,169 ****
{
char fmt[128];
if (module != NULL)
! sprintf(fmt, "%s: Warning, %s.", module, fmt0);
else
! sprintf(fmt, "Warning, %s.", fmt0);
vlogError(fmt, ap);
}
--- 161,169 ----
{
char fmt[128];
if (module != NULL)
! snprintf(fmt, 128, "%s: Warning, %s.", module, fmt0);
else
! snprintf(fmt, 128, "Warning, %s.", fmt0);
vlogError(fmt, ap);
}
***************
*** 172,180 ****
{
char fmt[128];
if (module != NULL)
! sprintf(fmt, "%s: Warning, %s.", module, fmt0);
else
! sprintf(fmt, "Warning, %s.", fmt0);
vlogWarning(fmt, ap);
}
--- 172,180 ----
{
char fmt[128];
if (module != NULL)
! snprintf(fmt, 128, "%s: Warning, %s.", module, fmt0);
else
! snprintf(fmt, 128, "Warning, %s.", fmt0);
vlogWarning(fmt, ap);
}
***************
*** 530,536 ****
filename, line);
seqnum = 1;
}
! sprintf(line, "%u", NEXTSEQNUM(seqnum+count));
lseek(fd, 0, SEEK_SET);
if (Sys::write(fd, line, strlen(line)) != strlen(line) ||
ftruncate(fd,strlen(line))) {
--- 530,536 ----
filename, line);
seqnum = 1;
}
! snprintf(line, 1024, "%u", NEXTSEQNUM(seqnum+count));
lseek(fd, 0, SEEK_SET);
if (Sys::write(fd, line, strlen(line)) != strlen(line) ||
ftruncate(fd,strlen(line))) {
diff -cr ./hfaxd/Jobs.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/Jobs.c++
*** ./hfaxd/Jobs.c++ Sat Feb 14 05:50:05 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/Jobs.c++ Fri Jun 9
16:46:19 2000
***************
*** 1646,1652 ****
fprintf(fd, fspec, (const char*) job.company);
break;
case 'D':
! sprintf(tmpbuf, "%2u:%-2u", job.totdials, job.maxdials);
fprintf(fd, fspec, tmpbuf);
break;
case 'E':
--- 1646,1652 ----
fprintf(fd, fspec, (const char*) job.company);
break;
case 'D':
! snprintf(tmpbuf, 20, "%2u:%-2u", job.totdials, job.maxdials);
fprintf(fd, fspec, tmpbuf);
break;
case 'E':
***************
*** 1683,1689 ****
fprintf(fd, fspec, "N "[job.useccover]);
break;
case 'P':
! sprintf(tmpbuf, "%2u:%-2u", job.npages, job.totpages);
fprintf(fd, fspec, tmpbuf);
break;
case 'Q':
--- 1683,1689 ----
fprintf(fd, fspec, "N "[job.useccover]);
break;
case 'P':
! snprintf(tmpbuf, 20, "%2u:%-2u", job.npages, job.totpages);
fprintf(fd, fspec, tmpbuf);
break;
case 'Q':
***************
*** 1696,1706 ****
fprintf(fd, fspec, (const char*) job.sender);
break;
case 'T':
! sprintf(tmpbuf, "%2u:%-2u", job.tottries, job.maxtries);
fprintf(fd, fspec, tmpbuf);
break;
case 'U':
! sprintf(tmpbuf, "%.1f", job.chopthreshold);
fprintf(fd, fspec, tmpbuf);
break;
case 'V':
--- 1696,1706 ----
fprintf(fd, fspec, (const char*) job.sender);
break;
case 'T':
! snprintf(tmpbuf, 20, "%2u:%-2u", job.tottries, job.maxtries);
fprintf(fd, fspec, tmpbuf);
break;
case 'U':
! snprintf(tmpbuf, 20, "%.1f", job.chopthreshold);
fprintf(fd, fspec, tmpbuf);
break;
case 'V':
diff -cr ./hfaxd/OldProtocol.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/OldProtocol.c++
*** ./hfaxd/OldProtocol.c++ Sat Feb 14 05:50:07 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/OldProtocol.c++ Sat
Jun 10 13:41:24 2000
***************
*** 352,359 ****
OldProtocolServer::vsendClient(const char* tag, const char* fmt, va_list ap)
{
char buf[2048];
! sprintf(buf, "%s:", tag);
! vsprintf(strchr(buf,'\0'), fmt, ap);
fprintf(stdout, "%s\n", buf);
if (TRACE(PROTOCOL))
logDebug("%s", buf);
--- 352,359 ----
OldProtocolServer::vsendClient(const char* tag, const char* fmt, va_list ap)
{
char buf[2048];
! snprintf(buf, 2048, "%s:", tag);
! vsnprintf(strchr(buf, '\0'), 2048-strlen(buf), fmt, ap);
fprintf(stdout, "%s\n", buf);
if (TRACE(PROTOCOL))
logDebug("%s", buf);
***************
*** 472,490 ****
buf[0] = '\0';
if (pwd->pw_gecos) {
if (pwd->pw_gecos[0] == '&') {
! strcpy(buf, pwd->pw_name);
! strcat(buf, pwd->pw_gecos+1);
if (islower(buf[0]))
buf[0] = toupper(buf[0]);
} else
! strcpy(buf, pwd->pw_gecos);
if ((cp = strchr(buf,',')) != 0)
*cp = '\0';
/* see FaxClient::setupUserIdentity; strip SysV junk */
if ((cp = strchr(buf,'(')) != 0)
*cp = '\0';
} else
! strcpy(buf, pwd->pw_name);
if (TRACE(PROTOCOL)) {
if (*buf)
logDebug("%s user: \"%s\"", pwd->pw_name, buf);
--- 472,491 ----
buf[0] = '\0';
if (pwd->pw_gecos) {
if (pwd->pw_gecos[0] == '&') {
! strncpy(buf, pwd->pw_name, sizeof(buf));
! strncat(buf, pwd->pw_gecos+1,
! sizeof(buf)-strlen(buf));
if (islower(buf[0]))
buf[0] = toupper(buf[0]);
} else
! strncpy(buf, pwd->pw_gecos, sizeof(buf));
if ((cp = strchr(buf,',')) != 0)
*cp = '\0';
/* see FaxClient::setupUserIdentity; strip SysV junk */
if ((cp = strchr(buf,'(')) != 0)
*cp = '\0';
} else
! strncpy(buf, pwd->pw_name, sizeof(buf));
if (TRACE(PROTOCOL)) {
if (*buf)
logDebug("%s user: \"%s\"", pwd->pw_name, buf);
Only in /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd: OldProtocol.c++~
diff -cr ./hfaxd/Status.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/Status.c++
*** ./hfaxd/Status.c++ Sat Feb 14 05:50:09 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/Status.c++ Sat Jun
10 13:43:50 2000
***************
*** 260,275 ****
break;
case 'r':
if (config.maxRecvPages == (u_int) -1)
! strcpy(tmpbuf, "INF");
else
! sprintf(tmpbuf, "%u", config.maxRecvPages);
fprintf(fd, fspec, config.maxRecvPages);
break;
case 's':
fprintf(fd, fspec, (const char*) config.status);
break;
case 't':
! sprintf(tmpbuf, "%05x:%05x",
config.tracingLevel&0xfffff,
config.logTracingLevel&0xfffff);
fprintf(fd, fspec, tmpbuf);
--- 260,275 ----
break;
case 'r':
if (config.maxRecvPages == (u_int) -1)
! strncpy(tmpbuf, "INF", sizeof(tmpbuf));
else
! snprintf(tmpbuf, sizeof(tmpbuf), "%u", config.maxRecvPages);
fprintf(fd, fspec, config.maxRecvPages);
break;
case 's':
fprintf(fd, fspec, (const char*) config.status);
break;
case 't':
! snprintf(tmpbuf, sizeof(tmpbuf), "%05x:%05x",
config.tracingLevel&0xfffff,
config.logTracingLevel&0xfffff);
fprintf(fd, fspec, tmpbuf);
Only in /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd: Status.c++~
diff -cr ./hfaxd/UnixFaxServer.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/UnixFaxServer.c++
*** ./hfaxd/UnixFaxServer.c++ Sat Feb 14 05:50:14 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/hfaxd/UnixFaxServer.c++
Fri Jun 9 17:01:32 2000
***************
*** 126,132 ****
if (s >= 0) {
/* anchor socket to avoid multi-homing problems */
data_source.sun_family = AF_UNIX;
! strcpy(data_source.sun_path, ctrl_addr.sun_path);
if (bind(s, (struct sockaddr*) &data_source, sizeof (data_source)) >= 0) {
return (fdopen(s, mode));
}
--- 126,132 ----
if (s >= 0) {
/* anchor socket to avoid multi-homing problems */
data_source.sun_family = AF_UNIX;
! strncpy(data_source.sun_path, ctrl_addr.sun_path,
sizeof(data_source.sun_path));
if (bind(s, (struct sockaddr*) &data_source, sizeof (data_source)) >= 0) {
return (fdopen(s, mode));
}
Only in .: patch-aa
diff -cr ./port/syslog.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/port/syslog.c
*** ./port/syslog.c Sat Feb 14 05:50:42 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/port/syslog.c Fri Jun 9
23:26:03 2000
***************
*** 104,119 ****
/* build the message */
(void)time(&now);
! (void)sprintf(tbuf, "<%d>%.15s ", pri, ctime(&now) + 4);
for (p = tbuf; *p; ++p);
if (LogStat & LOG_PERROR)
stdp = p;
if (LogTag) {
! (void)strcpy(p, LogTag);
for (; *p; ++p);
}
if (LogStat & LOG_PID) {
! (void)sprintf(p, "[%d]", getpid());
for (; *p; ++p);
}
if (LogTag) {
--- 104,122 ----
/* build the message */
(void)time(&now);
! (void)snprintf(tbuf, sizeof(tbuf)-4, "<%d>%.15s ",
! pri, ctime(&now) + 4);
for (p = tbuf; *p; ++p);
if (LogStat & LOG_PERROR)
stdp = p;
if (LogTag) {
! (void)strncpy(p, LogTag, sizeof(tbuf)-(size_t)(p-tbuf)-4);
! tbuf[sizeof(tbuf)-1] = '\0';
for (; *p; ++p);
}
if (LogStat & LOG_PID) {
! (void)snprintf(p,
! sizeof(tbuf)-(size_t)(p-tbuf)-4, "[%d]", getpid());
for (; *p; ++p);
}
if (LogTag) {
***************
*** 137,143 ****
*t1 = '\0';
}
! (void)vsprintf(p, fmt_cpy, ap);
cnt = strlen(tbuf);
--- 140,146 ----
*t1 = '\0';
}
! (void)vsnprintf(p, sizeof(tbuf)-(size_t)(p-tbuf)-2, fmt_cpy, ap);
cnt = strlen(tbuf);
diff -cr ./port/vsyslog.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/port/vsyslog.c
*** ./port/vsyslog.c Sat Feb 14 05:50:42 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/port/vsyslog.c Fri Jun 9
23:29:05 2000
***************
*** 49,54 ****
*cp++ = c;
*cp = '\0';
}
! (void) vsprintf(tbuf, fmt_cpy, ap);
(void) syslog(pri, "%s", tbuf);
}
--- 49,54 ----
*cp++ = c;
*cp = '\0';
}
! (void) vsnprintf(tbuf, sizeof(tbuf), fmt_cpy, ap);
(void) syslog(pri, "%s", tbuf);
}
diff -cr ./regex/engine.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/regex/engine.c
*** ./regex/engine.c Sat Feb 14 05:48:19 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/regex/engine.c Sat Jun 10
11:37:57 2000
***************
*** 1065,1073 ****
static char pbuf[10];
if (isprint(ch) || ch == ' ')
! sprintf(pbuf, "%c", ch);
else
! sprintf(pbuf, "\\%o", ch);
return(pbuf);
}
#endif
--- 1065,1073 ----
static char pbuf[10];
if (isprint(ch) || ch == ' ')
! snprintf(pbuf, 10, "%c", ch);
else
! snprintf(pbuf, 10, "\\%o", ch);
return(pbuf);
}
#endif
diff -cr ./regex/regerror.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/regex/regerror.c
*** ./regex/regerror.c Sat Feb 14 05:48:21 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/regex/regerror.c Sat Jun
10 11:36:28 2000
***************
*** 134,142 ****
if (errcode®_ITOA) {
if (r->code != 0)
! (void) strcpy(convbuf, r->name);
else
! sprintf(convbuf, "REG_0x%x", target);
assert(strlen(convbuf) < sizeof(convbuf));
s = convbuf;
} else
--- 134,144 ----
if (errcode®_ITOA) {
if (r->code != 0)
! (void) strncpy(convbuf, r->name,
! sizeof(convbuf));
else
! snprintf(convbuf, sizeof(convbuf),
! "REG_0x%x", target);
assert(strlen(convbuf) < sizeof(convbuf));
s = convbuf;
} else
diff -cr ./sgi2fax/imgtofax.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/sgi2fax/imgtofax.c
*** ./sgi2fax/imgtofax.c Sat Feb 14 05:50:22 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/sgi2fax/imgtofax.c Fri
Jun 9 23:35:05 2000
***************
*** 214,220 ****
TIFFSetField(tif, TIFFTAG_PAGENUMBER, pn, npages);
TIFFSetField(tif, TIFFTAG_CLEANFAXDATA, CLEANFAXDATA_CLEAN);
{ char buf[1024];
! sprintf(buf, "Ditherered B&W version of %s", input);
TIFFSetField(tif, TIFFTAG_IMAGEDESCRIPTION, buf);
}
TIFFSetField(tif, TIFFTAG_SOFTWARE, "sgi2fax");
--- 214,220 ----
TIFFSetField(tif, TIFFTAG_PAGENUMBER, pn, npages);
TIFFSetField(tif, TIFFTAG_CLEANFAXDATA, CLEANFAXDATA_CLEAN);
{ char buf[1024];
! snprintf(buf, 1024, "Ditherered B&W version of %s", input);
TIFFSetField(tif, TIFFTAG_IMAGEDESCRIPTION, buf);
}
TIFFSetField(tif, TIFFTAG_SOFTWARE, "sgi2fax");
diff -cr ./util/FaxClient.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/FaxClient.c++
*** ./util/FaxClient.c++ Sat Feb 14 05:47:16 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/FaxClient.c++ Fri
Jun 9 23:47:23 2000
***************
*** 622,628 ****
traceServer("-> ADMIN XXXX");
else {
char buf[128];
! sprintf(buf, "-> %s", fmt);
vtraceServer(buf, ap);
}
}
--- 622,628 ----
traceServer("-> ADMIN XXXX");
else {
char buf[128];
! snprintf(buf, 128, "-> %s", fmt);
vtraceServer(buf, ap);
}
}
diff -cr ./util/PageSize.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/PageSize.c++
*** ./util/PageSize.c++ Sat Feb 14 05:47:21 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/PageSize.c++ Fri
Jun 9 23:57:44 2000
***************
*** 72,78 ****
PageSizeInfo::readPageInfoFile()
{
char file[1024];
! sprintf(file, "%s/%s", FAX_LIBDATA, FAX_PAGESIZES);
PageInfoArray* info = new PageInfoArray;
FILE* fp = fopen(file, "r");
u_int lineno = 0;
--- 72,78 ----
PageSizeInfo::readPageInfoFile()
{
char file[1024];
! snprintf(file, sizeof(file), "%s/%s", FAX_LIBDATA, FAX_PAGESIZES);
PageInfoArray* info = new PageInfoArray;
FILE* fp = fopen(file, "r");
u_int lineno = 0;
diff -cr ./util/SNPPClient.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/SNPPClient.c++
*** ./util/SNPPClient.c++ Sat Feb 14 05:47:25 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/SNPPClient.c++ Fri
Jun 9 23:57:07 2000
***************
*** 638,644 ****
traceServer("-> LOGI XXXX");
else {
char buf[128];
! sprintf(buf, "-> %s", fmt);
vtraceServer(buf, ap);
}
}
--- 638,644 ----
traceServer("-> LOGI XXXX");
else {
char buf[128];
! snprintf(buf, sizeof(buf), "-> %s", fmt);
vtraceServer(buf, ap);
}
}
diff -cr ./util/StackBuffer.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/StackBuffer.c++
*** ./util/StackBuffer.c++ Sat Feb 14 05:47:26 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/StackBuffer.c++ Fri
Jun 9 23:55:42 2000
***************
*** 105,111 ****
fxStackBuffer::vput(const char* fmt, va_list ap)
{
char buf[8*1024];
! vsprintf(buf, fmt, ap);
put(buf);
}
--- 105,111 ----
fxStackBuffer::vput(const char* fmt, va_list ap)
{
char buf[8*1024];
! vsnprintf(buf, sizeof(buf), fmt, ap);
put(buf);
}
diff -cr ./util/Str.c++
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/Str.c++
*** ./util/Str.c++ Sat Feb 14 05:47:27 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/Str.c++ Fri Jun 9
15:36:38 2000
***************
*** 91,97 ****
{
char buffer[NUMBUFSIZE];
if (!format) format = "%d";
! sprintf(buffer,format,a);
slength = strlen(buffer) + 1;
data = (char*) malloc(slength);
memcpy(data,buffer,slength);
--- 91,97 ----
{
char buffer[NUMBUFSIZE];
if (!format) format = "%d";
! snprintf(buffer, NUMBUFSIZE, format,a);
slength = strlen(buffer) + 1;
data = (char*) malloc(slength);
memcpy(data,buffer,slength);
***************
*** 101,107 ****
{
char buffer[NUMBUFSIZE];
if (!format) format = "%ld";
! sprintf(buffer,format,a);
slength = strlen(buffer) + 1;
data = (char*) malloc(slength);
memcpy(data,buffer,slength);
--- 101,107 ----
{
char buffer[NUMBUFSIZE];
if (!format) format = "%ld";
! snprintf(buffer, NUMBUFSIZE, format,a);
slength = strlen(buffer) + 1;
data = (char*) malloc(slength);
memcpy(data,buffer,slength);
***************
*** 111,117 ****
{
char buffer[NUMBUFSIZE];
if (!format) format = "%g";
! sprintf(buffer,format,a);
slength = strlen(buffer) + 1;
fxAssert(slength>1, "Str::Str(float): bogus conversion");
data = (char*) malloc(slength);
--- 111,117 ----
{
char buffer[NUMBUFSIZE];
if (!format) format = "%g";
! snprintf(buffer, NUMBUFSIZE, format,a);
slength = strlen(buffer) + 1;
fxAssert(slength>1, "Str::Str(float): bogus conversion");
data = (char*) malloc(slength);
***************
*** 122,128 ****
{
char buffer[NUMBUFSIZE];
if (!format) format = "%lg";
! sprintf(buffer,format,a);
slength = strlen(buffer) + 1;
fxAssert(slength>1, "Str::Str(double): bogus conversion");
data = (char*) malloc(slength); // XXX assume slength>1
--- 122,128 ----
{
char buffer[NUMBUFSIZE];
if (!format) format = "%lg";
! snprintf(buffer, NUMBUFSIZE, format,a);
slength = strlen(buffer) + 1;
fxAssert(slength>1, "Str::Str(double): bogus conversion");
data = (char*) malloc(slength); // XXX assume slength>1
***************
*** 141,147 ****
char buf[4096];
va_list ap;
va_start(ap, fmt);
! vsprintf(buf, fmt, ap);
va_end(ap);
return fxStr(buf);
}
--- 141,147 ----
char buf[4096];
va_list ap;
va_start(ap, fmt);
! vsnprintf(buf, 4096, fmt, ap);
va_end(ap);
return fxStr(buf);
}
***************
*** 150,156 ****
fxStr::vformat(const char* fmt, va_list ap)
{
char buf[4096];
! vsprintf(buf, fmt, ap);
return fxStr(buf);
}
--- 150,156 ----
fxStr::vformat(const char* fmt, va_list ap)
{
char buf[4096];
! vsnprintf(buf, 4096, fmt, ap);
return fxStr(buf);
}
diff -cr ./util/faxconfig.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/faxconfig.c
*** ./util/faxconfig.c Sat Feb 14 05:47:57 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/faxconfig.c Fri
Jun 9 23:49:19 2000
***************
*** 81,92 ****
}
if (devid != NULL) {
if (devid[0] == FAX_FIFO[0])
! strcpy(fifoname, devid);
else
! sprintf(fifoname, "%s.%.*s", FAX_FIFO,
sizeof (fifoname) - sizeof (FAX_FIFO), devid);
} else
! strcpy(fifoname, FAX_FIFO);
for (cp = fifoname; cp = strchr(cp, '/'); *cp++ = '_')
;
if (chdir(spooldir) < 0)
--- 81,92 ----
}
if (devid != NULL) {
if (devid[0] == FAX_FIFO[0])
! strncpy(fifoname, devid, sizeof(fifoname));
else
! snprintf(fifoname, sizeof(fifoname), "%s.%.*s", FAX_FIFO,
sizeof (fifoname) - sizeof (FAX_FIFO), devid);
} else
! strncpy(fifoname, FAX_FIFO, sizeof(fifoname));
for (cp = fifoname; cp = strchr(cp, '/'); *cp++ = '_')
;
if (chdir(spooldir) < 0)
***************
*** 111,120 ****
quote = 1;
cmd = malloc(strlen(argv[optind])+strlen(argv[optind+1])+10);
if (quote)
! sprintf(cmd, "C%s%s:\"%s\"",
isQueuer ? ":" : "", argv[optind], argv[optind+1]);
else
! sprintf(cmd, "C%s%s:%s",
isQueuer ? ":" : "", argv[optind], argv[optind+1]);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("%s: FIFO write failed for command (%s)",
--- 111,120 ----
quote = 1;
cmd = malloc(strlen(argv[optind])+strlen(argv[optind+1])+10);
if (quote)
! snprintf(cmd, sizeof(cmd), "C%s%s:\"%s\"",
isQueuer ? ":" : "", argv[optind], argv[optind+1]);
else
! snprintf(cmd, sizeof(cmd), "C%s%s:%s",
isQueuer ? ":" : "", argv[optind], argv[optind+1]);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("%s: FIFO write failed for command (%s)",
diff -cr ./util/faxmodem.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/faxmodem.c
*** ./util/faxmodem.c Sat Feb 14 05:47:57 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/faxmodem.c Fri Jun 9
23:50:28 2000
***************
*** 243,251 ****
if (optind != argc-1)
fatal("Missing modem device.\nusage: %s %s modem", argv[0], usage);
if (strncmp(argv[optind], _PATH_DEV, strlen(_PATH_DEV)) == 0)
! strcpy(devname, argv[optind]+strlen(_PATH_DEV));
else
! strcpy(devname, argv[optind]);
for (cp = devname; cp = strchr(cp, '/'); *cp++ = '_')
;
if (chdir(spooldir) < 0)
--- 243,251 ----
if (optind != argc-1)
fatal("Missing modem device.\nusage: %s %s modem", argv[0], usage);
if (strncmp(argv[optind], _PATH_DEV, strlen(_PATH_DEV)) == 0)
! strncpy(devname, argv[optind]+strlen(_PATH_DEV), sizeof(devname));
else
! strncpy(devname, argv[optind], sizeof(devname));
for (cp = devname; cp = strchr(cp, '/'); *cp++ = '_')
;
if (chdir(spooldir) < 0)
***************
*** 254,262 ****
if (fifo < 0)
fatal("%s: open: %s", FAX_FIFO, strerror(errno));
if (priority != -1)
! sprintf(cmd, "+%s:R%c%08x:%x", devname, canpoll, caps, priority);
else
! sprintf(cmd, "+%s:R%c%08x", devname, canpoll, caps);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("%s: FIFO write failed for command (%s)",
argv[0], strerror(errno));
--- 254,263 ----
if (fifo < 0)
fatal("%s: open: %s", FAX_FIFO, strerror(errno));
if (priority != -1)
! snprintf(cmd, sizeof(cmd), "+%s:R%c%08x:%x", devname, canpoll,
! caps, priority);
else
! snprintf(cmd, sizeof(cmd), "+%s:R%c%08x", devname, canpoll, caps);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("%s: FIFO write failed for command (%s)",
argv[0], strerror(errno));
diff -cr ./util/faxmsg.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/faxmsg.c
*** ./util/faxmsg.c Sat Feb 14 05:47:58 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/faxmsg.c Fri Jun 9
23:51:29 2000
***************
*** 108,119 ****
}
if (optind == argc-1) {
if (argv[optind][0] == FAX_FIFO[0])
! strcpy(fifoname, argv[optind]);
else
! sprintf(fifoname, "%s.%.*s", FAX_FIFO,
sizeof (fifoname) - sizeof (FAX_FIFO), argv[optind]);
} else if (!modemRequired) {
! strcpy(fifoname, FAX_FIFO);
} else
fatal("usage: %s %s", argv[0], usage);
for (cp = fifoname; cp = strchr(cp, '/'); *cp++ = '_')
--- 108,119 ----
}
if (optind == argc-1) {
if (argv[optind][0] == FAX_FIFO[0])
! strncpy(fifoname, argv[optind], sizeof(fifoname));
else
! snprintf(fifoname, sizeof(fifoname), "%s.%.*s", FAX_FIFO,
sizeof (fifoname) - sizeof (FAX_FIFO), argv[optind]);
} else if (!modemRequired) {
! strncpy(fifoname, FAX_FIFO, sizeof(fifoname));
} else
fatal("usage: %s %s", argv[0], usage);
for (cp = fifoname; cp = strchr(cp, '/'); *cp++ = '_')
***************
*** 123,129 ****
fifo = open(fifoname, O_WRONLY|O_NDELAY);
if (fifo < 0)
fatal("%s: open: %s", fifoname, strerror(errno));
! sprintf(cmd, cmdfmt, arg);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("FIFO write failed for command (%s)", strerror(errno));
(void) close(fifo);
--- 123,129 ----
fifo = open(fifoname, O_WRONLY|O_NDELAY);
if (fifo < 0)
fatal("%s: open: %s", fifoname, strerror(errno));
! snprintf(cmd, sizeof(cmd), cmdfmt, arg);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("FIFO write failed for command (%s)", strerror(errno));
(void) close(fifo);
diff -cr ./util/faxstate.c
/usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/faxstate.c
*** ./util/faxstate.c Sat Feb 14 05:47:58 1998
--- /usr/ports/comms/hylafax_new/hylafax-v4.0pl2/util/faxstate.c Fri Jun 9
23:38:55 2000
***************
*** 113,119 ****
}
if (optind != argc-1)
fatal("Bad option `%c'; usage: %s %s modem", c, argv[0], usage);
! strcpy(devid, argv[optind]);
for (cp = devid; cp = strchr(cp, '/'); *cp++ = '_')
;
if (chdir(spooldir) < 0)
--- 113,119 ----
}
if (optind != argc-1)
fatal("Bad option `%c'; usage: %s %s modem", c, argv[0], usage);
! strncpy(devid, argv[optind], sizeof(devid));
for (cp = devid; cp = strchr(cp, '/'); *cp++ = '_')
;
if (chdir(spooldir) < 0)
***************
*** 126,141 ****
fifo = open(FAX_FIFO, O_WRONLY|O_NDELAY);
if (fifo < 0)
fatal("%s: open: %s", FAX_FIFO, strerror(errno));
! sprintf(cmd, "+%s:%s", devid, arg);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("FIFO write failed for command (%s)", strerror(errno));
} else {
! sprintf(fifoname, "%s.%.*s", FAX_FIFO,
sizeof (fifoname) - sizeof (FAX_FIFO), devid);
fifo = open(fifoname, O_WRONLY|O_NDELAY);
if (fifo < 0)
fatal("%s: open: %s", fifoname, strerror(errno));
! sprintf(cmd, "S%s", arg);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("FIFO write failed for command (%s)", strerror(errno));
}
--- 126,141 ----
fifo = open(FAX_FIFO, O_WRONLY|O_NDELAY);
if (fifo < 0)
fatal("%s: open: %s", FAX_FIFO, strerror(errno));
! snprintf(cmd, sizeof(cmd), "+%s:%s", devid, arg);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("FIFO write failed for command (%s)", strerror(errno));
} else {
! snprintf(fifoname, sizeof(cmd), "%s.%.*s", FAX_FIFO,
sizeof (fifoname) - sizeof (FAX_FIFO), devid);
fifo = open(fifoname, O_WRONLY|O_NDELAY);
if (fifo < 0)
fatal("%s: open: %s", fifoname, strerror(errno));
! snprintf(cmd, sizeof(cmd), "S%s", arg);
if (write(fifo, cmd, strlen(cmd)) != strlen(cmd))
fatal("FIFO write failed for command (%s)", strerror(errno));
}
____________________ HylaFAX(tm) Developers Mailing List ____________________
To unsub: mail -s unsubscribe hylafax-devel-request@hylafax.org < /dev/null