mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-03 01:23:49 +00:00
gecko: fix an unlikely race with environ(7)
MFH: 2016Q1
This commit is contained in:
parent
49477413c0
commit
0f0c3a0e4a
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=411909
@ -3,6 +3,7 @@
|
||||
|
||||
PORTNAME= thunderbird
|
||||
DISTVERSION= 38.7.0
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= mail news net-im ipv6
|
||||
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
|
||||
MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source
|
||||
|
40
mail/thunderbird/files/patch-bug1233275
Normal file
40
mail/thunderbird/files/patch-bug1233275
Normal file
@ -0,0 +1,40 @@
|
||||
# Copy environment for IPC using NSPR to avoid race
|
||||
|
||||
diff --git a/ipc/chromium/src/base/process_util_bsd.cc b/ipc/chromium/src/base/process_util_bsd.cc
|
||||
--- mozilla/ipc/chromium/src/base/process_util_bsd.cc
|
||||
+++ mozilla/ipc/chromium/src/base/process_util_bsd.cc
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
+#include "nspr.h"
|
||||
#include "base/eintr_wrapper.h"
|
||||
#include "base/file_util.h"
|
||||
#include "base/logging.h"
|
||||
@@ -48,7 +49,6 @@
|
||||
|
||||
#ifdef HAVE_POSIX_SPAWN
|
||||
#include <spawn.h>
|
||||
-extern "C" char **environ __dso_public;
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
@@ -114,6 +114,7 @@ bool LaunchApp(const std::vector<std::st
|
||||
// Existing variables are overwritten by env_vars_to_set.
|
||||
int pos = 0;
|
||||
environment_map combined_env_vars = env_vars_to_set;
|
||||
+ char **environ = PR_DuplicateEnvironment();
|
||||
while(environ[pos] != NULL) {
|
||||
std::string varString = environ[pos];
|
||||
std::string varName = varString.substr(0, varString.find_first_of('='));
|
||||
@@ -121,8 +122,9 @@ bool LaunchApp(const std::vector<std::st
|
||||
if (combined_env_vars.find(varName) == combined_env_vars.end()) {
|
||||
combined_env_vars[varName] = varValue;
|
||||
}
|
||||
- pos++;
|
||||
+ PR_Free(environ[pos++]);
|
||||
}
|
||||
+ PR_Free(environ);
|
||||
int varsLen = combined_env_vars.size() + 1;
|
||||
|
||||
char** vars = new char*[varsLen];
|
@ -4,6 +4,7 @@
|
||||
PORTNAME= firefox
|
||||
DISTVERSION= 38.7.1
|
||||
DISTVERSIONSUFFIX=esr.source
|
||||
PORTREVISION= 1
|
||||
PORTEPOCH= 1
|
||||
CATEGORIES= www ipv6
|
||||
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source \
|
||||
|
40
www/firefox-esr/files/patch-bug1233275
Normal file
40
www/firefox-esr/files/patch-bug1233275
Normal file
@ -0,0 +1,40 @@
|
||||
# Copy environment for IPC using NSPR to avoid race
|
||||
|
||||
diff --git a/ipc/chromium/src/base/process_util_bsd.cc b/ipc/chromium/src/base/process_util_bsd.cc
|
||||
--- ipc/chromium/src/base/process_util_bsd.cc
|
||||
+++ ipc/chromium/src/base/process_util_bsd.cc
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
+#include "nspr.h"
|
||||
#include "base/eintr_wrapper.h"
|
||||
#include "base/file_util.h"
|
||||
#include "base/logging.h"
|
||||
@@ -48,7 +49,6 @@
|
||||
|
||||
#ifdef HAVE_POSIX_SPAWN
|
||||
#include <spawn.h>
|
||||
-extern "C" char **environ __dso_public;
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
@@ -114,6 +114,7 @@ bool LaunchApp(const std::vector<std::st
|
||||
// Existing variables are overwritten by env_vars_to_set.
|
||||
int pos = 0;
|
||||
environment_map combined_env_vars = env_vars_to_set;
|
||||
+ char **environ = PR_DuplicateEnvironment();
|
||||
while(environ[pos] != NULL) {
|
||||
std::string varString = environ[pos];
|
||||
std::string varName = varString.substr(0, varString.find_first_of('='));
|
||||
@@ -121,8 +122,9 @@ bool LaunchApp(const std::vector<std::st
|
||||
if (combined_env_vars.find(varName) == combined_env_vars.end()) {
|
||||
combined_env_vars[varName] = varValue;
|
||||
}
|
||||
- pos++;
|
||||
+ PR_Free(environ[pos++]);
|
||||
}
|
||||
+ PR_Free(environ);
|
||||
int varsLen = combined_env_vars.size() + 1;
|
||||
|
||||
char** vars = new char*[varsLen];
|
@ -4,7 +4,7 @@
|
||||
PORTNAME= firefox
|
||||
DISTVERSION= 45.0.1
|
||||
DISTVERSIONSUFFIX=.source
|
||||
PORTREVISION= 2
|
||||
PORTREVISION= 3
|
||||
PORTEPOCH= 1
|
||||
CATEGORIES= www ipv6
|
||||
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
|
||||
|
36
www/firefox/files/patch-bug1233275
Normal file
36
www/firefox/files/patch-bug1233275
Normal file
@ -0,0 +1,36 @@
|
||||
# Copy environment for IPC using NSPR to avoid race
|
||||
|
||||
diff --git a/ipc/chromium/src/base/process_util_bsd.cc b/ipc/chromium/src/base/process_util_bsd.cc
|
||||
--- ipc/chromium/src/base/process_util_bsd.cc
|
||||
+++ ipc/chromium/src/base/process_util_bsd.cc
|
||||
@@ -12,10 +12,9 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
+#include "nspr.h"
|
||||
#include "base/eintr_wrapper.h"
|
||||
|
||||
-extern "C" char **environ __attribute__((__visibility__("default")));
|
||||
-
|
||||
namespace base {
|
||||
|
||||
void FreeEnvVarsArray(char* array[], int length)
|
||||
@@ -66,6 +65,7 @@ bool LaunchApp(const std::vector<std::st
|
||||
// Existing variables are overwritten by env_vars_to_set.
|
||||
int pos = 0;
|
||||
environment_map combined_env_vars = env_vars_to_set;
|
||||
+ char **environ = PR_DuplicateEnvironment();
|
||||
while(environ[pos] != NULL) {
|
||||
std::string varString = environ[pos];
|
||||
std::string varName = varString.substr(0, varString.find_first_of('='));
|
||||
@@ -73,8 +73,9 @@ bool LaunchApp(const std::vector<std::st
|
||||
if (combined_env_vars.find(varName) == combined_env_vars.end()) {
|
||||
combined_env_vars[varName] = varValue;
|
||||
}
|
||||
- pos++;
|
||||
+ PR_Free(environ[pos++]);
|
||||
}
|
||||
+ PR_Free(environ);
|
||||
int varsLen = combined_env_vars.size() + 1;
|
||||
|
||||
char** vars = new char*[varsLen];
|
@ -3,6 +3,7 @@
|
||||
|
||||
PORTNAME= libxul
|
||||
DISTVERSION= 38.7.1
|
||||
PORTREVISION= 1
|
||||
CATEGORIES?= www devel
|
||||
MASTER_SITES= MOZILLA/firefox/releases/${DISTVERSION}esr/source \
|
||||
MOZILLA/firefox/candidates/${DISTVERSION}esr-candidates/build1/source
|
||||
|
40
www/libxul/files/patch-bug1233275
Normal file
40
www/libxul/files/patch-bug1233275
Normal file
@ -0,0 +1,40 @@
|
||||
# Copy environment for IPC using NSPR to avoid race
|
||||
|
||||
diff --git a/ipc/chromium/src/base/process_util_bsd.cc b/ipc/chromium/src/base/process_util_bsd.cc
|
||||
--- ipc/chromium/src/base/process_util_bsd.cc
|
||||
+++ ipc/chromium/src/base/process_util_bsd.cc
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
+#include "nspr.h"
|
||||
#include "base/eintr_wrapper.h"
|
||||
#include "base/file_util.h"
|
||||
#include "base/logging.h"
|
||||
@@ -48,7 +49,6 @@
|
||||
|
||||
#ifdef HAVE_POSIX_SPAWN
|
||||
#include <spawn.h>
|
||||
-extern "C" char **environ __dso_public;
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
@@ -114,6 +114,7 @@ bool LaunchApp(const std::vector<std::st
|
||||
// Existing variables are overwritten by env_vars_to_set.
|
||||
int pos = 0;
|
||||
environment_map combined_env_vars = env_vars_to_set;
|
||||
+ char **environ = PR_DuplicateEnvironment();
|
||||
while(environ[pos] != NULL) {
|
||||
std::string varString = environ[pos];
|
||||
std::string varName = varString.substr(0, varString.find_first_of('='));
|
||||
@@ -121,8 +122,9 @@ bool LaunchApp(const std::vector<std::st
|
||||
if (combined_env_vars.find(varName) == combined_env_vars.end()) {
|
||||
combined_env_vars[varName] = varValue;
|
||||
}
|
||||
- pos++;
|
||||
+ PR_Free(environ[pos++]);
|
||||
}
|
||||
+ PR_Free(environ);
|
||||
int varsLen = combined_env_vars.size() + 1;
|
||||
|
||||
char** vars = new char*[varsLen];
|
@ -4,7 +4,7 @@
|
||||
PORTNAME= seamonkey
|
||||
DISTVERSION= 2.39
|
||||
MOZILLA_VER= 42 # above + 3
|
||||
PORTREVISION= 6
|
||||
PORTREVISION= 7
|
||||
CATEGORIES?= www mail news editors irc ipv6
|
||||
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
|
||||
MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source
|
||||
|
40
www/seamonkey/files/patch-bug1233275
Normal file
40
www/seamonkey/files/patch-bug1233275
Normal file
@ -0,0 +1,40 @@
|
||||
# Copy environment for IPC using NSPR to avoid race
|
||||
|
||||
diff --git a/ipc/chromium/src/base/process_util_bsd.cc b/ipc/chromium/src/base/process_util_bsd.cc
|
||||
--- mozilla/ipc/chromium/src/base/process_util_bsd.cc
|
||||
+++ mozilla/ipc/chromium/src/base/process_util_bsd.cc
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
+#include "nspr.h"
|
||||
#include "base/eintr_wrapper.h"
|
||||
#include "base/file_util.h"
|
||||
#include "base/logging.h"
|
||||
@@ -48,7 +49,6 @@
|
||||
|
||||
#ifdef HAVE_POSIX_SPAWN
|
||||
#include <spawn.h>
|
||||
-extern "C" char **environ __dso_public;
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
@@ -114,6 +114,7 @@ bool LaunchApp(const std::vector<std::st
|
||||
// Existing variables are overwritten by env_vars_to_set.
|
||||
int pos = 0;
|
||||
environment_map combined_env_vars = env_vars_to_set;
|
||||
+ char **environ = PR_DuplicateEnvironment();
|
||||
while(environ[pos] != NULL) {
|
||||
std::string varString = environ[pos];
|
||||
std::string varName = varString.substr(0, varString.find_first_of('='));
|
||||
@@ -121,8 +122,9 @@ bool LaunchApp(const std::vector<std::st
|
||||
if (combined_env_vars.find(varName) == combined_env_vars.end()) {
|
||||
combined_env_vars[varName] = varValue;
|
||||
}
|
||||
- pos++;
|
||||
+ PR_Free(environ[pos++]);
|
||||
}
|
||||
+ PR_Free(environ);
|
||||
int varsLen = combined_env_vars.size() + 1;
|
||||
|
||||
char** vars = new char*[varsLen];
|
Loading…
Reference in New Issue
Block a user