Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • nounous-archives/openwrt-barrier-breaker
  • colisson/openwrt-barrier-breaker
  • serrano/openwrt-barrier-breaker
3 results
Show changes
Showing
with 103 additions and 49 deletions
From 5d4fa2a29bef013e61185beb21a3ec110885eb9a Mon Sep 17 00:00:00 2001
From: Jouni Malinen <jouni@qca.qualcomm.com>
Date: Mon, 6 Oct 2014 18:49:01 +0300
Subject: [PATCH 3/3] hostapd_cli: Use os_exec() for action script execution
Use os_exec() to run the action script operations to avoid undesired
command line processing for control interface event strings. Previously,
it could have been possible for some of the event strings to include
unsanitized data which is not suitable for system() use. (CVE-2014-3686)
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
---
hostapd/hostapd_cli.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
--- a/hostapd/hostapd_cli.c
+++ b/hostapd/hostapd_cli.c
@@ -238,28 +238,19 @@ static int hostapd_cli_cmd_mib(struct wp
static int hostapd_cli_exec(const char *program, const char *arg1,
const char *arg2)
{
- char *cmd;
+ char *arg;
size_t len;
int res;
- int ret = 0;
- len = os_strlen(program) + os_strlen(arg1) + os_strlen(arg2) + 3;
- cmd = os_malloc(len);
- if (cmd == NULL)
+ len = os_strlen(arg1) + os_strlen(arg2) + 2;
+ arg = os_malloc(len);
+ if (arg == NULL)
return -1;
- res = os_snprintf(cmd, len, "%s %s %s", program, arg1, arg2);
- if (res < 0 || (size_t) res >= len) {
- os_free(cmd);
- return -1;
- }
- cmd[len - 1] = '\0';
-#ifndef _WIN32_WCE
- if (system(cmd) < 0)
- ret = -1;
-#endif /* _WIN32_WCE */
- os_free(cmd);
+ os_snprintf(arg, len, "%s %s", arg1, arg2);
+ res = os_exec(program, arg, 1);
+ os_free(arg);
- return ret;
+ return res;
}
--- a/src/utils/os_unix.c
+++ b/src/utils/os_unix.c
@@ -9,6 +9,7 @@
#include "includes.h"
@@ -10,6 +10,7 @@
#include <time.h>
#include <sys/wait.h>
+#include <fcntl.h>
#ifdef ANDROID
#include <sys/capability.h>
@@ -154,59 +155,46 @@ int os_gmtime(os_time_t t, struct os_tm
@@ -155,59 +156,46 @@ int os_gmtime(os_time_t t, struct os_tm
return 0;
}
......
......@@ -157,7 +157,7 @@
#include "drivers/driver.h"
#include "wpa_supplicant_i.h"
#include "config.h"
@@ -247,6 +248,10 @@ static void calculate_update_time(const
@@ -247,6 +248,10 @@ static void calculate_update_time(const
static void wpa_bss_copy_res(struct wpa_bss *dst, struct wpa_scan_res *src,
struct os_reltime *fetch_time)
{
......
......@@ -166,7 +166,7 @@
/**
* wpa_hexdump_ascii_key - conditional hex dump, hide keys
@@ -142,8 +177,14 @@ void wpa_hexdump_ascii(int level, const
@@ -142,8 +177,14 @@ void wpa_hexdump_ascii(int level, const
* bytes per line will be shown. This works like wpa_hexdump_ascii(), but by
* default, does not include secret keys (passwords, etc.) in debug output.
*/
......
......@@ -16,7 +16,7 @@
" get_config show current configuration\n"
" help show this usage help\n"
" interface [ifname] show interfaces/select interface\n"
@@ -362,7 +360,6 @@ static int hostapd_cli_cmd_sa_query(stru
@@ -353,7 +351,6 @@ static int hostapd_cli_cmd_sa_query(stru
#endif /* CONFIG_IEEE80211W */
......@@ -24,7 +24,7 @@
static int hostapd_cli_cmd_wps_pin(struct wpa_ctrl *ctrl, int argc,
char *argv[])
{
@@ -588,7 +585,6 @@ static int hostapd_cli_cmd_wps_config(st
@@ -579,7 +576,6 @@ static int hostapd_cli_cmd_wps_config(st
ssid_hex, argv[1]);
return wpa_ctrl_command(ctrl, buf);
}
......@@ -32,7 +32,7 @@
static int hostapd_cli_cmd_disassoc_imminent(struct wpa_ctrl *ctrl, int argc,
@@ -979,7 +975,6 @@ static struct hostapd_cli_cmd hostapd_cl
@@ -970,7 +966,6 @@ static struct hostapd_cli_cmd hostapd_cl
#ifdef CONFIG_IEEE80211W
{ "sa_query", hostapd_cli_cmd_sa_query },
#endif /* CONFIG_IEEE80211W */
......@@ -40,7 +40,7 @@
{ "wps_pin", hostapd_cli_cmd_wps_pin },
{ "wps_check_pin", hostapd_cli_cmd_wps_check_pin },
{ "wps_pbc", hostapd_cli_cmd_wps_pbc },
@@ -993,7 +988,6 @@ static struct hostapd_cli_cmd hostapd_cl
@@ -984,7 +979,6 @@ static struct hostapd_cli_cmd hostapd_cl
{ "wps_ap_pin", hostapd_cli_cmd_wps_ap_pin },
{ "wps_config", hostapd_cli_cmd_wps_config },
{ "wps_get_status", hostapd_cli_cmd_wps_get_status },
......
......@@ -33,7 +33,7 @@
/* Initialize the driver interface */
if (!(b[0] | b[1] | b[2] | b[3] | b[4] | b[5]))
b = NULL;
@@ -372,8 +384,6 @@ static void hostapd_global_deinit(const
@@ -372,8 +384,6 @@ static void hostapd_global_deinit(const
#endif /* CONFIG_NATIVE_WINDOWS */
eap_server_unregister_methods();
......
......@@ -8,14 +8,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mdns
PKG_VERSION:=2014-06-25
PKG_VERSION:=2014-09-02
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_URL:=git://git.openwrt.org/project/mdnsd.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=902e2d1eaaff0d3d33dee605a4746fd5d4b6b999
PKG_SOURCE_VERSION:=b7e5cb7ab91a9487ec71a14b706b5589cefe9052
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
......
......@@ -8,14 +8,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=odhcpd
PKG_VERSION:=2014-08-23
PKG_VERSION:=2014-09-25
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_URL:=git://github.com/sbyx/odhcpd.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=24452e1e3e9adfd9d8e183db1aa589f77727f5a7
PKG_SOURCE_VERSION:=a6e2953843eaf6c93764f9feef10466e7a84ec85
PKG_MAINTAINER:=Steven Barth <steven@midlink.org>
......
......@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=ppp
PKG_VERSION:=2.4.6
PKG_VERSION:=2.4.7
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.samba.org/pub/ppp/
PKG_MD5SUM:=3434d2cc9327167a0723aaaa8670083b
PKG_MD5SUM:=78818f40e6d33a1d1de68a1551f6595a
PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
......
......@@ -85,7 +85,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
"Enable multilink operation", OPT_PRIO | 1 },
--- a/pppd/pppd.h
+++ b/pppd/pppd.h
@@ -317,6 +317,8 @@ extern bool tune_kernel; /* May alter ke
@@ -318,6 +318,8 @@ extern bool tune_kernel; /* May alter ke
extern int connect_delay; /* Time to delay after connect script */
extern int max_data_rate; /* max bytes/sec through charshunt */
extern int req_unit; /* interface unit number to use */
......
......@@ -12,7 +12,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
--- a/pppd/sys-linux.c
+++ b/pppd/sys-linux.c
@@ -453,6 +453,13 @@ int generic_establish_ppp (int fd)
@@ -458,6 +458,13 @@ int generic_establish_ppp (int fd)
if (new_style_driver) {
int flags;
......
......@@ -150,7 +150,7 @@
} else {
--- a/pppd/ipv6cp.c
+++ b/pppd/ipv6cp.c
@@ -1243,7 +1243,7 @@ ipv6cp_up(f)
@@ -1232,7 +1232,7 @@ ipv6cp_up(f)
}
}
......@@ -161,7 +161,7 @@
} else {
--- a/pppd/pppd.h
+++ b/pppd/pppd.h
@@ -584,7 +584,7 @@ void demand_conf __P((void)); /* config
@@ -585,7 +585,7 @@ void demand_conf __P((void)); /* config
void demand_block __P((void)); /* set all NPs to queue up packets */
void demand_unblock __P((void)); /* set all NPs to pass packets */
void demand_discard __P((void)); /* set all NPs to discard packets */
......
......@@ -153,7 +153,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
.B nodeflate
--- a/pppd/pppd.h
+++ b/pppd/pppd.h
@@ -664,7 +664,7 @@ int sif6addr __P((int, eui64_t, eui64_t
@@ -667,7 +667,7 @@ int sif6addr __P((int, eui64_t, eui64_t
int cif6addr __P((int, eui64_t, eui64_t));
/* Remove an IPv6 address from i/f */
#endif
......@@ -164,16 +164,16 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
/* Delete default route through i/f */
--- a/pppd/sys-linux.c
+++ b/pppd/sys-linux.c
@@ -206,6 +206,8 @@ static unsigned char inbuf[512]; /* buff
@@ -207,6 +207,8 @@ static unsigned char inbuf[512]; /* buff
static int if_is_up; /* Interface has been marked up */
static int if6_is_up; /* Interface has been marked up for IPv6, to help differentiate */
static int have_default_route; /* Gateway for default route added */
+static struct rtentry old_def_rt; /* Old default route */
+static int default_rt_repl_rest; /* replace and restore old default rt */
static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
static char proxy_arp_dev[16]; /* Device for proxy arp entry */
static u_int32_t our_old_addr; /* for detecting address changes */
@@ -1544,6 +1546,9 @@ static int read_route_table(struct rtent
@@ -1552,6 +1554,9 @@ static int read_route_table(struct rtent
p = NULL;
}
......@@ -183,7 +183,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SIN_ADDR(rt->rt_dst) = strtoul(cols[route_dest_col], NULL, 16);
SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16);
SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16);
@@ -1613,20 +1618,51 @@ int have_route_to(u_int32_t addr)
@@ -1621,20 +1626,51 @@ int have_route_to(u_int32_t addr)
/********************************************************************
*
* sifdefaultroute - assign a default route through the address given.
......@@ -248,7 +248,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
}
memset (&rt, 0, sizeof (rt));
@@ -1641,10 +1677,16 @@ int sifdefaultroute (int unit, u_int32_t
@@ -1649,10 +1685,16 @@ int sifdefaultroute (int unit, u_int32_t
rt.rt_flags = RTF_UP;
if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
......@@ -266,7 +266,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
have_default_route = 1;
return 1;
@@ -1675,11 +1717,21 @@ int cifdefaultroute (int unit, u_int32_t
@@ -1683,11 +1725,21 @@ int cifdefaultroute (int unit, u_int32_t
rt.rt_flags = RTF_UP;
if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
if (still_ppp()) {
......@@ -291,7 +291,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
}
--- a/pppd/sys-solaris.c
+++ b/pppd/sys-solaris.c
@@ -2036,12 +2036,18 @@ cifaddr(u, o, h)
@@ -2039,12 +2039,18 @@ cifaddr(u, o, h)
* sifdefaultroute - assign a default route through the address given.
*/
int
......
......@@ -48,7 +48,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
"Enable multilink operation", OPT_PRIO | 1 },
--- a/pppd/ipv6cp.c
+++ b/pppd/ipv6cp.c
@@ -1303,7 +1303,7 @@ ipv6cp_up(f)
@@ -1269,7 +1269,7 @@ ipv6cp_up(f)
*/
if (ipv6cp_script_state == s_down && ipv6cp_script_pid == 0) {
ipv6cp_script_state = s_up;
......@@ -57,7 +57,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
}
}
@@ -1357,7 +1357,7 @@ ipv6cp_down(f)
@@ -1321,7 +1321,7 @@ ipv6cp_down(f)
/* Execute the ipv6-down script */
if (ipv6cp_script_state == s_up && ipv6cp_script_pid == 0) {
ipv6cp_script_state = s_down;
......@@ -66,7 +66,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
}
}
@@ -1400,13 +1400,13 @@ ipv6cp_script_done(arg)
@@ -1364,13 +1364,13 @@ ipv6cp_script_done(arg)
case s_up:
if (ipv6cp_fsm[0].state != OPENED) {
ipv6cp_script_state = s_down;
......@@ -84,7 +84,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
}
--- a/pppd/pppd.h
+++ b/pppd/pppd.h
@@ -319,6 +319,8 @@ extern int max_data_rate; /* max bytes/s
@@ -320,6 +320,8 @@ extern int max_data_rate; /* max bytes/s
extern int req_unit; /* interface unit number to use */
extern char path_ipup[MAXPATHLEN]; /* pathname of ip-up script */
extern char path_ipdown[MAXPATHLEN]; /* pathname of ip-down script */
......
......@@ -77,7 +77,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
#ifdef MAXOCTETS
{ "maxoctets", o_int, &maxoctets,
"Set connection traffic limit",
@@ -1488,6 +1504,29 @@ callfile(argv)
@@ -1493,6 +1509,29 @@ callfile(argv)
return ok;
}
......
......@@ -56,7 +56,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
/*
* Limits.
*/
@@ -316,6 +320,7 @@ extern char *record_file; /* File to rec
@@ -317,6 +321,7 @@ extern char *record_file; /* File to rec
extern bool sync_serial; /* Device is synchronous serial device */
extern int maxfail; /* Max # of unsuccessful connection attempts */
extern char linkname[MAXPATHLEN]; /* logical name for link */
......@@ -77,7 +77,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
static int tty_disc = N_TTY; /* The TTY discipline */
static int ppp_disc = N_PPP; /* The PPP discpline */
static int initfdflags = -1; /* Initial file descriptor flags for fd */
@@ -615,7 +619,8 @@ void generic_disestablish_ppp(int dev_fd
@@ -620,7 +624,8 @@ void generic_disestablish_ppp(int dev_fd
*/
static int make_ppp_unit()
{
......@@ -87,7 +87,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
if (ppp_dev_fd >= 0) {
dbglog("in make_ppp_unit, already had /dev/ppp open?");
@@ -638,6 +643,30 @@ static int make_ppp_unit()
@@ -643,6 +648,30 @@ static int make_ppp_unit()
}
if (x < 0)
error("Couldn't create new ppp unit: %m");
......
......@@ -118,7 +118,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
&& memcmp(vd.dptr, key.dptr, vd.dsize) == 0;
--- a/pppd/sys-linux.c
+++ b/pppd/sys-linux.c
@@ -693,6 +693,16 @@ void cfg_bundle(int mrru, int mtru, int
@@ -698,6 +698,16 @@ void cfg_bundle(int mrru, int mtru, int
add_fd(ppp_dev_fd);
}
......@@ -135,7 +135,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
/*
* make_new_bundle - create a new PPP unit (i.e. a bundle)
* and connect our channel to it. This should only get called
@@ -711,6 +721,8 @@ void make_new_bundle(int mrru, int mtru,
@@ -716,6 +726,8 @@ void make_new_bundle(int mrru, int mtru,
/* set the mrru and flags */
cfg_bundle(mrru, mtru, rssn, tssn);
......
......@@ -12,7 +12,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
--- a/pppd/sys-linux.c
+++ b/pppd/sys-linux.c
@@ -1748,6 +1748,7 @@ int cifdefaultroute (int unit, u_int32_t
@@ -1756,6 +1756,7 @@ int cifdefaultroute (int unit, u_int32_t
SIN_ADDR(rt.rt_genmask) = 0L;
}
......
......@@ -13,7 +13,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
--- a/pppd/sys-linux.c
+++ b/pppd/sys-linux.c
@@ -1702,6 +1702,9 @@ int sifdefaultroute (int unit, u_int32_t
@@ -1710,6 +1710,9 @@ int sifdefaultroute (int unit, u_int32_t
memset (&rt, 0, sizeof (rt));
SET_SA_FAMILY (rt.rt_dst, AF_INET);
......@@ -23,7 +23,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
rt.rt_dev = ifname;
if (kernel_version > KVERSION(2,1,0)) {
@@ -1709,7 +1712,7 @@ int sifdefaultroute (int unit, u_int32_t
@@ -1717,7 +1720,7 @@ int sifdefaultroute (int unit, u_int32_t
SIN_ADDR(rt.rt_genmask) = 0L;
}
......
......@@ -19,7 +19,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
static char loop_name[20];
static unsigned char inbuf[512]; /* buffer for chars read from loopback */
@@ -213,8 +213,8 @@ static int looped; /* 1 if using loop
@@ -214,8 +214,8 @@ static int looped; /* 1 if using loop
static int link_mtu; /* mtu for the link (not bundle) */
static struct utsname utsname; /* for the kernel version */
......@@ -29,7 +29,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
#define MAX_IFS 100
@@ -1443,11 +1443,12 @@ int ccp_fatal_error (int unit)
@@ -1451,11 +1451,12 @@ int ccp_fatal_error (int unit)
*
* path_to_procfs - find the path to the proc file system mount point
*/
......@@ -44,7 +44,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
struct mntent *mntent;
FILE *fp;
@@ -1469,6 +1470,7 @@ static char *path_to_procfs(const char *
@@ -1477,6 +1478,7 @@ static char *path_to_procfs(const char *
fclose (fp);
}
}
......@@ -52,7 +52,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
strlcpy(proc_path + proc_path_len, tail,
sizeof(proc_path) - proc_path_len);
@@ -2121,15 +2123,19 @@ int ppp_available(void)
@@ -2129,15 +2131,19 @@ int ppp_available(void)
int my_version, my_modification, my_patch;
int osmaj, osmin, ospatch;
......@@ -72,7 +72,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
/* XXX should get from driver */
driver_version = 2;
@@ -2189,6 +2195,7 @@ int ppp_available(void)
@@ -2197,6 +2203,7 @@ int ppp_available(void)
if (ok && ((ifr.ifr_hwaddr.sa_family & ~0xFF) != ARPHRD_PPP))
ok = 0;
......@@ -80,7 +80,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
/*
* This is the PPP device. Validate the version of the driver at this
@@ -2684,6 +2691,7 @@ get_pty(master_fdp, slave_fdp, slave_nam
@@ -2730,6 +2737,7 @@ get_pty(master_fdp, slave_fdp, slave_nam
}
#endif /* TIOCGPTN */
......@@ -88,7 +88,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
if (sfd < 0) {
/* the old way - scan through the pty name space */
for (i = 0; i < 64; ++i) {
@@ -2702,6 +2710,7 @@ get_pty(master_fdp, slave_fdp, slave_nam
@@ -2748,6 +2756,7 @@ get_pty(master_fdp, slave_fdp, slave_nam
}
}
}
......@@ -138,7 +138,7 @@ Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
info("RP-PPPoE plugin version %s compiled against pppd %s",
--- a/pppd/plugins/pppol2tp/pppol2tp.c
+++ b/pppd/plugins/pppol2tp/pppol2tp.c
@@ -500,12 +500,7 @@ static void pppol2tp_cleanup(void)
@@ -486,12 +486,7 @@ static void pppol2tp_cleanup(void)
void plugin_init(void)
{
......