640e6f3b3b
It fixes many buffer overflow in different protocol parsers, but none of them are critical, even in absense of Capsicum. Security: CVE-2016-7922, CVE-2016-7923, CVE-2016-7924, CVE-2016-7925 Security: CVE-2016-7926, CVE-2016-7927, CVE-2016-7928, CVE-2016-7929 Security: CVE-2016-7930, CVE-2016-7931, CVE-2016-7932, CVE-2016-7933 Security: CVE-2016-7934, CVE-2016-7935, CVE-2016-7936, CVE-2016-7937 Security: CVE-2016-7938, CVE-2016-7939, CVE-2016-7940, CVE-2016-7973 Security: CVE-2016-7974, CVE-2016-7975, CVE-2016-7983, CVE-2016-7984 Security: CVE-2016-7985, CVE-2016-7986, CVE-2016-7992, CVE-2016-7993 Security: CVE-2016-8574, CVE-2016-8575, CVE-2017-5202, CVE-2017-5203 Security: CVE-2017-5204, CVE-2017-5205, CVE-2017-5341, CVE-2017-5342 Security: CVE-2017-5482, CVE-2017-5483, CVE-2017-5484, CVE-2017-5485 Security: CVE-2017-5486
212 lines
5.9 KiB
C
212 lines
5.9 KiB
C
/*
|
|
* Copyright (c) 1989, 1990, 1993, 1994, 1995, 1996
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that: (1) source code distributions
|
|
* retain the above copyright notice and this paragraph in its entirety, (2)
|
|
* distributions including binary code include the above copyright notice and
|
|
* this paragraph in its entirety in the documentation or other materials
|
|
* provided with the distribution, and (3) all advertising materials mentioning
|
|
* features or use of this software display the following acknowledgement:
|
|
* ``This product includes software developed by the University of California,
|
|
* Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
|
|
* the University nor the names of its contributors may be used to endorse
|
|
* or promote products derived from this software without specific prior
|
|
* written permission.
|
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
*/
|
|
|
|
/* Prototypes missing in SunOS 4 */
|
|
#ifdef FILE
|
|
int _filbuf(FILE *);
|
|
int _flsbuf(u_char, FILE *);
|
|
int fclose(FILE *);
|
|
int fflush(FILE *);
|
|
int fgetc(FILE *);
|
|
int fprintf(FILE *, const char *, ...);
|
|
int fputc(int, FILE *);
|
|
int fputs(const char *, FILE *);
|
|
u_int fread(void *, u_int, u_int, FILE *);
|
|
int fseek(FILE *, long, int);
|
|
u_int fwrite(const void *, u_int, u_int, FILE *);
|
|
int pclose(FILE *);
|
|
void rewind(FILE *);
|
|
void setbuf(FILE *, char *);
|
|
int setlinebuf(FILE *);
|
|
int ungetc(int, FILE *);
|
|
int vfprintf(FILE *, const char *, ...);
|
|
int vprintf(const char *, ...);
|
|
#endif
|
|
|
|
#if __GNUC__ <= 1
|
|
int read(int, char *, u_int);
|
|
int write(int, char *, u_int);
|
|
#endif
|
|
|
|
long a64l(const char *);
|
|
#ifdef __STDC__
|
|
struct sockaddr;
|
|
#endif
|
|
int accept(int, struct sockaddr *, int *);
|
|
int bind(int, struct sockaddr *, int);
|
|
int bcmp(const void *, const void *, u_int);
|
|
void bcopy(const void *, void *, u_int);
|
|
void bzero(void *, int);
|
|
int chroot(const char *);
|
|
int close(int);
|
|
void closelog(void);
|
|
int connect(int, struct sockaddr *, int);
|
|
char *crypt(const char *, const char *);
|
|
int daemon(int, int);
|
|
int fchmod(int, int);
|
|
int fchown(int, int, int);
|
|
void endgrent(void);
|
|
void endpwent(void);
|
|
void endservent(void);
|
|
#ifdef __STDC__
|
|
struct ether_addr;
|
|
#endif
|
|
struct ether_addr *ether_aton(const char *);
|
|
int flock(int, int);
|
|
#ifdef __STDC__
|
|
struct stat;
|
|
#endif
|
|
int fstat(int, struct stat *);
|
|
#ifdef __STDC__
|
|
struct statfs;
|
|
#endif
|
|
int fstatfs(int, struct statfs *);
|
|
int fsync(int);
|
|
#ifdef __STDC__
|
|
struct timeb;
|
|
#endif
|
|
int ftime(struct timeb *);
|
|
int ftruncate(int, off_t);
|
|
int getdtablesize(void);
|
|
long gethostid(void);
|
|
int gethostname(char *, int);
|
|
int getopt(int, char * const *, const char *);
|
|
int getpagesize(void);
|
|
char *getpass(char *);
|
|
int getpeername(int, struct sockaddr *, int *);
|
|
int getpriority(int, int);
|
|
#ifdef __STDC__
|
|
struct rlimit;
|
|
#endif
|
|
int getrlimit(int, struct rlimit *);
|
|
int getsockname(int, struct sockaddr *, int *);
|
|
int getsockopt(int, int, int, char *, int *);
|
|
#ifdef __STDC__
|
|
struct timeval;
|
|
struct timezone;
|
|
#endif
|
|
int gettimeofday(struct timeval *, struct timezone *);
|
|
char *getusershell(void);
|
|
char *getwd(char *);
|
|
int initgroups(const char *, int);
|
|
int ioctl(int, int, caddr_t);
|
|
int iruserok(u_long, int, char *, char *);
|
|
int isatty(int);
|
|
int killpg(int, int);
|
|
int listen(int, int);
|
|
#ifdef __STDC__
|
|
struct utmp;
|
|
#endif
|
|
void login(struct utmp *);
|
|
int logout(const char *);
|
|
off_t lseek(int, off_t, int);
|
|
int lstat(const char *, struct stat *);
|
|
int mkstemp(char *);
|
|
char *mktemp(char *);
|
|
int munmap(caddr_t, int);
|
|
void openlog(const char *, int, int);
|
|
void perror(const char *);
|
|
int printf(const char *, ...);
|
|
int puts(const char *);
|
|
long random(void);
|
|
int readlink(const char *, char *, int);
|
|
#ifdef __STDC__
|
|
struct iovec;
|
|
#endif
|
|
int readv(int, struct iovec *, int);
|
|
int recv(int, char *, u_int, int);
|
|
int recvfrom(int, char *, u_int, int, struct sockaddr *, int *);
|
|
int rename(const char *, const char *);
|
|
int rcmd(char **, u_short, char *, char *, char *, int *);
|
|
int rresvport(int *);
|
|
int send(int, char *, u_int, int);
|
|
int sendto(int, char *, u_int, int, struct sockaddr *, int);
|
|
int setenv(const char *, const char *, int);
|
|
int seteuid(int);
|
|
int setpriority(int, int, int);
|
|
int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
|
|
int setpgrp(int, int);
|
|
void setpwent(void);
|
|
int setrlimit(int, struct rlimit *);
|
|
void setservent(int);
|
|
int setsockopt(int, int, int, char *, int);
|
|
int shutdown(int, int);
|
|
int sigblock(int);
|
|
void (*signal (int, void (*) (int))) (int);
|
|
int sigpause(int);
|
|
int sigsetmask(int);
|
|
#ifdef __STDC__
|
|
struct sigvec;
|
|
#endif
|
|
int sigvec(int, struct sigvec *, struct sigvec*);
|
|
int snprintf(char *, size_t, const char *, ...);
|
|
int socket(int, int, int);
|
|
int socketpair(int, int, int, int *);
|
|
int symlink(const char *, const char *);
|
|
void srandom(int);
|
|
int sscanf(char *, const char *, ...);
|
|
int stat(const char *, struct stat *);
|
|
int statfs(char *, struct statfs *);
|
|
char *strerror(int);
|
|
#ifdef __STDC__
|
|
struct tm;
|
|
#endif
|
|
int strftime(char *, int, char *, struct tm *);
|
|
long strtol(const char *, char **, int);
|
|
void sync(void);
|
|
void syslog(int, const char *, ...);
|
|
int system(const char *);
|
|
long tell(int);
|
|
time_t time(time_t *);
|
|
char *timezone(int, int);
|
|
int tolower(int);
|
|
int toupper(int);
|
|
int truncate(char *, off_t);
|
|
void unsetenv(const char *);
|
|
int vfork(void);
|
|
int vsprintf(char *, const char *, ...);
|
|
int writev(int, struct iovec *, int);
|
|
#ifdef __STDC__
|
|
struct rusage;
|
|
#endif
|
|
int utimes(const char *, struct timeval *);
|
|
#if __GNUC__ <= 1
|
|
int wait(int *);
|
|
pid_t wait3(int *, int, struct rusage *);
|
|
#endif
|
|
|
|
/* Ugly signal hacking */
|
|
#ifdef SIG_ERR
|
|
#undef SIG_ERR
|
|
#define SIG_ERR (void (*)(int))-1
|
|
#undef SIG_DFL
|
|
#define SIG_DFL (void (*)(int))0
|
|
#undef SIG_IGN
|
|
#define SIG_IGN (void (*)(int))1
|
|
|
|
#ifdef KERNEL
|
|
#undef SIG_CATCH
|
|
#define SIG_CATCH (void (*)(int))2
|
|
#endif
|
|
#undef SIG_HOLD
|
|
#define SIG_HOLD (void (*)(int))3
|
|
#endif
|