diff options
author | Robert Piasek <dagger@gentoo.org> | 2011-02-08 13:31:01 +0000 |
---|---|---|
committer | Robert Piasek <dagger@gentoo.org> | 2011-02-08 13:31:01 +0000 |
commit | 9ef471d239194cd621df2e58c1df9fe6d4c4e8ac (patch) | |
tree | 17e23aad21597027d0844b84ccc8bf2725dd0478 /net-misc | |
parent | Remove old versions, security bug #353626. (diff) | |
download | gentoo-2-9ef471d239194cd621df2e58c1df9fe6d4c4e8ac.tar.gz gentoo-2-9ef471d239194cd621df2e58c1df9fe6d4c4e8ac.tar.bz2 gentoo-2-9ef471d239194cd621df2e58c1df9fe6d4c4e8ac.zip |
Fix temp files creation in keyfile plugin bug #349003
(Portage version: 2.1.9.35/cvs/Linux x86_64)
Diffstat (limited to 'net-misc')
-rw-r--r-- | net-misc/networkmanager/ChangeLog | 9 | ||||
-rw-r--r-- | net-misc/networkmanager/files/networkmanager-0.8.2-fix-tempfiles.patch | 210 | ||||
-rw-r--r-- | net-misc/networkmanager/networkmanager-0.8.2-r6.ebuild (renamed from net-misc/networkmanager/networkmanager-0.8.2-r5.ebuild) | 4 |
3 files changed, 221 insertions, 2 deletions
diff --git a/net-misc/networkmanager/ChangeLog b/net-misc/networkmanager/ChangeLog index 74dac53b77ec..f0ed9eaea062 100644 --- a/net-misc/networkmanager/ChangeLog +++ b/net-misc/networkmanager/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for net-misc/networkmanager # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/ChangeLog,v 1.96 2011/02/06 15:06:17 qiaomuf Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/ChangeLog,v 1.97 2011/02/08 13:31:01 dagger Exp $ + +*networkmanager-0.8.2-r6 (08 Feb 2011) + + 08 Feb 2011; Robert Piasek <dagger@gentoo.org> + -networkmanager-0.8.2-r5.ebuild, +networkmanager-0.8.2-r6.ebuild, + +files/networkmanager-0.8.2-fix-tempfiles.patch: + Fix temp files creation in keyfile plugin bug #349003 *networkmanager-0.8.2-r5 (06 Feb 2011) diff --git a/net-misc/networkmanager/files/networkmanager-0.8.2-fix-tempfiles.patch b/net-misc/networkmanager/files/networkmanager-0.8.2-fix-tempfiles.patch new file mode 100644 index 000000000000..12621d2b23e4 --- /dev/null +++ b/net-misc/networkmanager/files/networkmanager-0.8.2-fix-tempfiles.patch @@ -0,0 +1,210 @@ +From 0376f6b1ceda64e279e64bfb37ab67f0c36478b6 Mon Sep 17 00:00:00 2001 +From: Jiří Klimeš <jklimes@redhat.com> +Date: Wed, 10 Nov 2010 15:21:25 +0000 +Subject: keyfile: ignore temporary files (bgo #602868) + +Ignore temporary files created by vim editor and temporary files created +internally by g_file_set_contents() (mkstemp()) when writing connections. +--- +diff --git a/system-settings/plugins/keyfile/Makefile.am b/system-settings/plugins/keyfile/Makefile.am +index c519adc..128775e 100644 +--- a/system-settings/plugins/keyfile/Makefile.am ++++ b/system-settings/plugins/keyfile/Makefile.am +@@ -16,6 +16,8 @@ libkeyfile_io_la_SOURCES = \ + writer.c \ + writer.h \ + errors.c \ ++ utils.c \ ++ utils.h \ + common.h + + libkeyfile_io_la_CPPFLAGS = \ +diff --git a/system-settings/plugins/keyfile/common.h b/system-settings/plugins/keyfile/common.h +index 7d94a70..6c8f9ce 100644 +--- a/system-settings/plugins/keyfile/common.h ++++ b/system-settings/plugins/keyfile/common.h +@@ -23,6 +23,9 @@ + + #include <glib.h> + ++#define SWP_TAG ".swp" ++#define SWPX_TAG ".swpx" ++ + #define KEYFILE_PLUGIN_NAME "keyfile" + #define KEYFILE_PLUGIN_INFO "(c) 2007 - 2010 Red Hat, Inc. To report bugs please use the NetworkManager mailing list." + +diff --git a/system-settings/plugins/keyfile/plugin.c b/system-settings/plugins/keyfile/plugin.c +index f57a4b6..5a927ce 100644 +--- a/system-settings/plugins/keyfile/plugin.c ++++ b/system-settings/plugins/keyfile/plugin.c +@@ -39,6 +39,7 @@ + #include "nm-keyfile-connection.h" + #include "writer.h" + #include "common.h" ++#include "utils.h" + + #define CONF_FILE SYSCONFDIR "/NetworkManager/NetworkManager.conf" + #define OLD_CONF_FILE SYSCONFDIR "/NetworkManager/nm-system-settings.conf" +@@ -89,6 +90,9 @@ read_connections (NMSystemConfigInterface *config) + NMKeyfileConnection *connection; + char *full_path; + ++ if (utils_should_ignore_file (item)) ++ continue; ++ + full_path = g_build_filename (KEYFILE_DIR, item, NULL); + PLUGIN_PRINT (KEYFILE_PLUGIN_NAME, "parsing %s ... ", item); + connection = nm_keyfile_connection_new (full_path, &error); +@@ -192,6 +196,11 @@ dir_changed (GFileMonitor *monitor, + GError *error = NULL; + + name = g_file_get_path (file); ++ if (utils_should_ignore_file (name)) { ++ g_free (name); ++ return; ++ } ++ + connection = g_hash_table_lookup (priv->hash, name); + + switch (event_type) { +diff --git a/system-settings/plugins/keyfile/utils.c b/system-settings/plugins/keyfile/utils.c +new file mode 100644 +index 0000000..de64f79 +--- a/dev/null ++++ b/system-settings/plugins/keyfile/utils.c +@@ -0,0 +1,97 @@ ++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ ++/* NetworkManager system settings service ++ * ++ * 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 ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * (C) Copyright 2010 Red Hat, Inc. ++ */ ++ ++#include <glib.h> ++#include <stdlib.h> ++#include <string.h> ++#include "utils.h" ++ ++ ++static const char temp_letters[] = ++"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; ++ ++/* ++ * Check '.[a-zA-Z0-9]{6}' file suffix used for temporary files by g_file_set_contents() (mkstemp()). ++ */ ++static gboolean ++check_mkstemp_suffix (const char *path) ++{ ++ const char *ptr; ++ ++ g_return_val_if_fail (path != NULL, FALSE); ++ ++ /* Matches *.[a-zA-Z0-9]{6} suffix of mkstemp()'s temporary files */ ++ ptr = strrchr (path, '.'); ++ if (ptr && (strspn (ptr + 1, temp_letters) == 6) && (! ptr[7])) ++ return TRUE; ++ return FALSE; ++} ++ ++static gboolean ++check_prefix (const char *base, const char *tag) ++{ ++ int len, tag_len; ++ ++ g_return_val_if_fail (base != NULL, TRUE); ++ g_return_val_if_fail (tag != NULL, TRUE); ++ ++ len = strlen (base); ++ tag_len = strlen (tag); ++ if ((len > tag_len) && !strncasecmp (base, tag, tag_len)) ++ return TRUE; ++ return FALSE; ++} ++ ++static gboolean ++check_suffix (const char *base, const char *tag) ++{ ++ int len, tag_len; ++ ++ g_return_val_if_fail (base != NULL, TRUE); ++ g_return_val_if_fail (tag != NULL, TRUE); ++ ++ len = strlen (base); ++ tag_len = strlen (tag); ++ if ((len > tag_len) && !strcasecmp (base + len - tag_len, tag)) ++ return TRUE; ++ return FALSE; ++} ++ ++gboolean ++utils_should_ignore_file (const char *filename) ++{ ++ char *base; ++ gboolean ignore = FALSE; ++ ++ g_return_val_if_fail (filename != NULL, TRUE); ++ ++ base = g_path_get_basename (filename); ++ g_return_val_if_fail (base != NULL, TRUE); ++ ++ /* Ignore files with certain patterns */ ++ if ( (check_prefix (base, ".") && check_suffix (base, SWP_TAG)) /* vim temporary files: .filename.swp */ ++ || (check_prefix (base, ".") && check_suffix (base, SWPX_TAG)) /* vim temporary files: .filename.swpx */ ++ || check_mkstemp_suffix (base)) /* temporary files created by mkstemp() */ ++ ignore = TRUE; ++ ++ g_free (base); ++ return ignore; ++} ++ +diff --git a/system-settings/plugins/keyfile/utils.h b/system-settings/plugins/keyfile/utils.h +new file mode 100644 +index 0000000..3c1a610 +--- a/dev/null ++++ b/system-settings/plugins/keyfile/utils.h +@@ -0,0 +1,30 @@ ++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ ++/* NetworkManager system settings service ++ * ++ * 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 ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * (C) Copyright 2010 Red Hat, Inc. ++ */ ++ ++#ifndef _UTILS_H_ ++#define _UTILS_H_ ++ ++#include <glib.h> ++#include "common.h" ++ ++gboolean utils_should_ignore_file (const char *filename); ++ ++#endif /* _UTILS_H_ */ ++ +-- +cgit v0.8.3-6-g21f6 diff --git a/net-misc/networkmanager/networkmanager-0.8.2-r5.ebuild b/net-misc/networkmanager/networkmanager-0.8.2-r6.ebuild index 97d6ee6e417f..36a9fadf9c44 100644 --- a/net-misc/networkmanager/networkmanager-0.8.2-r5.ebuild +++ b/net-misc/networkmanager/networkmanager-0.8.2-r6.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/networkmanager-0.8.2-r5.ebuild,v 1.1 2011/02/06 15:06:17 qiaomuf Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/networkmanager-0.8.2-r6.ebuild,v 1.1 2011/02/08 13:31:01 dagger Exp $ EAPI="2" @@ -97,6 +97,8 @@ src_prepare() { epatch "${FILESDIR}/${P}-fix-timestamp.patch" # fix tests wrt bug #353549 epatch "${FILESDIR}/${P}-fix-tests.patch" + # fix temporary files creation bug #349003 + epatch "${FILESDIR}/${P}-fix-tempfiles.patch" eautoreconf } |