1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-05 22:43:24 +00:00
freebsd-ports/japanese/FreeWnn-server/files/patch-ab
Satoshi Asami b578202a58 Fix another remote buffer overflow.
Obtained from:	Bugtraq-JP (SPS Advisory #34)
Submitted by:	kuriyama
2000-03-12 07:21:27 +00:00

65 lines
1.2 KiB
Plaintext

--- Wnn/jserver/de.c~ Fri Aug 19 10:31:23 1994
+++ Wnn/jserver/de.c Fri Mar 10 00:44:42 2000
@@ -65,6 +65,9 @@
#include <sys/ioctl.h>
+#if (defined(__unix__) || defined(unix)) && !defined(USG)
+#include <sys/param.h>
+#endif
#ifdef SYSVR2
#include <sys/param.h>
#ifndef SIGCHLD
@@ -264,7 +267,16 @@
fclose(stdin);
fclose(stdout);
if(!noisy){
+#if !(defined(BSD) && (BSD >= 199306)) /* !4.4BSD-Lite by Taoka */
fclose(stderr);
+#else /* 4.4BSD-Lite */
+ int fd = open("/dev/null", O_WRONLY);
+ if (fd < 0) {
+ xerror("Cannot open /dev/null\n");
+ }
+ dup2(fd, 2);
+ close(fd);
+#endif /* 4.4BSD-Lite */
}
#if defined(hpux) || defined(SOLARIS)
@@ -542,10 +554,14 @@
/** **/
void
-gets_cur(cp)
+gets_cur(cp, len)
register char *cp;
+int len;
{
- while((*cp++ = getc_cur()) != '\0');
+ int i;
+
+ for (i = 0; i < len; i++)
+ if ((*(cp + i) = getc_cur()) == '\0') break;
}
/** **/
@@ -648,6 +664,17 @@
{
register int c;
while(c= *p++) putc_cur(c);
+ putc_cur(0);
+}
+
+/** **/
+void
+puts_n_cur(p,n)
+char *p;
+int n;
+{
+ register int c;
+ while((c = *p++) && --n >= 0) putc_cur(c);
putc_cur(0);
}