Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 256589
Collapse All | Expand All

(-)libsandbox/memory.c (-2 / +2 lines)
Lines 34-42 void free(void *ptr) Link Here
34
		SB_EERROR("sandbox memory corruption", " free(%p): %s\n",
34
		SB_EERROR("sandbox memory corruption", " free(%p): %s\n",
35
			ptr, strerror(errno));
35
			ptr, strerror(errno));
36
#ifdef HAVE_BACKTRACE
36
#ifdef HAVE_BACKTRACE
37
		void *funcs[10];
37
		void *funcs[100];
38
		int num_funcs;
38
		int num_funcs;
39
		num_funcs = backtrace(funcs, sizeof(funcs));
39
		num_funcs = backtrace(funcs, sizeof(funcs) / sizeof(funcs[0]));
40
		backtrace_symbols_fd(funcs, num_funcs, STDERR_FILENO);
40
		backtrace_symbols_fd(funcs, num_funcs, STDERR_FILENO);
41
#endif
41
#endif
42
	}
42
	}
(-)libsbutil/sb_memory.c (-4 / +7 lines)
Lines 62-68 __xrealloc(void *ptr, size_t size, const Link Here
62
char *
62
char *
63
__xstrdup(const char *str, const char *file, const char *func, size_t line)
63
__xstrdup(const char *str, const char *file, const char *func, size_t line)
64
{
64
{
65
	char *ret = strdup(str);
65
	size_t len = strlen(str);
66
	char *ret = malloc(len + 1);
66
67
67
	if (ret == NULL) {
68
	if (ret == NULL) {
68
		SB_EERROR("strdup()", " %s:%s():%zu: strdup(%p) failed: %s\n",
69
		SB_EERROR("strdup()", " %s:%s():%zu: strdup(%p) failed: %s\n",
Lines 70-82 __xstrdup(const char *str, const char *f Link Here
70
		abort();
71
		abort();
71
	}
72
	}
72
73
73
	return ret;
74
	return memcpy(ret, str, len + 1);
74
}
75
}
75
76
76
char *
77
char *
77
__xstrndup(const char *str, size_t size, const char *file, const char *func, size_t line)
78
__xstrndup(const char *str, size_t size, const char *file, const char *func, size_t line)
78
{
79
{
79
	char *ret = strndup(str, size);
80
	size_t len = MIN(strlen(str), size);
81
	char *ret = malloc(len + 1);
80
82
81
	if (ret == NULL) {
83
	if (ret == NULL) {
82
		SB_EERROR("strndup()", " %s:%s():%zu: strndup(%p, %zu) failed: %s\n",
84
		SB_EERROR("strndup()", " %s:%s():%zu: strndup(%p, %zu) failed: %s\n",
Lines 84-88 __xstrndup(const char *str, size_t size, Link Here
84
		abort();
86
		abort();
85
	}
87
	}
86
88
87
	return ret;
89
	ret[len] = '\0';
90
	return memcpy(ret, str, len);
88
}
91
}
(-)libsandbox/libsandbox.c (-1 / +4 lines)
Lines 924-931 int before_syscall(int dirfd, int sb_nr, Link Here
924
	errno = old_errno;
924
	errno = old_errno;
925
925
926
	if (0 == result) {
926
	if (0 == result) {
927
		if ((NULL != getenv(ENV_SANDBOX_PID)) && (is_env_on(ENV_SANDBOX_ABORT)))
927
		if ((1 == sbcontext.show_access_violation) && (NULL != getenv(ENV_SANDBOX_PID)) && (is_env_on(ENV_SANDBOX_ABORT))) {
928
			SB_EERROR("ABORT PARENT", "  %s:%*s%s\n",
929
				func, (int)(10 - strlen(func)), "", file);
928
			kill(atoi(getenv(ENV_SANDBOX_PID)), SIGUSR1);
930
			kill(atoi(getenv(ENV_SANDBOX_PID)), SIGUSR1);
931
		}
929
932
930
		/* FIXME: Should probably audit errno, and enable some other
933
		/* FIXME: Should probably audit errno, and enable some other
931
		 *        error to be returned (EINVAL for invalid mode for
934
		 *        error to be returned (EINVAL for invalid mode for

Return to bug 256589