mirror of
https://github.com/opnsense/src.git
synced 2026-06-08 16:22:46 -04:00
Fixes to locale code to properly use indirect pointers in order to prevent
memory leaks (fixes bugs earlier purported to be fixed). Submitted by: Ed Moy <emoy@apple.com> Obtained from: Apple Computer, Inc. MFC after: 2 weeks
This commit is contained in:
parent
887cae2b70
commit
3dfdc427f1
6 changed files with 11 additions and 11 deletions
|
|
@ -47,7 +47,7 @@ static int split_lines(char *, const char *);
|
|||
int
|
||||
__part_load_locale(const char *name,
|
||||
int *using_locale,
|
||||
char *locale_buf,
|
||||
char **locale_buf,
|
||||
const char *category_filename,
|
||||
int locale_buf_size_max,
|
||||
int locale_buf_size_min,
|
||||
|
|
@ -69,7 +69,7 @@ __part_load_locale(const char *name,
|
|||
/*
|
||||
* If the locale name is the same as our cache, use the cache.
|
||||
*/
|
||||
if (locale_buf != NULL && strcmp(name, locale_buf) == 0) {
|
||||
if (*locale_buf != NULL && strcmp(name, *locale_buf) == 0) {
|
||||
*using_locale = 1;
|
||||
return (_LDP_CACHE);
|
||||
}
|
||||
|
|
@ -124,10 +124,10 @@ __part_load_locale(const char *name,
|
|||
/*
|
||||
* Record the successful parse in the cache.
|
||||
*/
|
||||
if (locale_buf != NULL)
|
||||
free(locale_buf);
|
||||
locale_buf = lbuf;
|
||||
for (p = locale_buf, i = 0; i < num_lines; i++)
|
||||
if (*locale_buf != NULL)
|
||||
free(*locale_buf);
|
||||
*locale_buf = lbuf;
|
||||
for (p = *locale_buf, i = 0; i < num_lines; i++)
|
||||
dst_localebuf[i] = (p += strlen(p) + 1);
|
||||
for (i = num_lines; i < locale_buf_size_max; i++)
|
||||
dst_localebuf[i] = NULL;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
#define _LDP_ERROR (-1)
|
||||
#define _LDP_CACHE 1
|
||||
|
||||
int __part_load_locale(const char *, int*, char *, const char *,
|
||||
int __part_load_locale(const char *, int*, char **, const char *,
|
||||
int, int, const char **);
|
||||
|
||||
#endif /* !_LDPART_H_ */
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ __messages_load_locale(const char *name)
|
|||
int ret;
|
||||
|
||||
ret = __part_load_locale(name, &_messages_using_locale,
|
||||
_messages_locale_buf, "LC_MESSAGES",
|
||||
&_messages_locale_buf, "LC_MESSAGES",
|
||||
LCMESSAGES_SIZE_FULL, LCMESSAGES_SIZE_MIN,
|
||||
(const char **)&_messages_locale);
|
||||
if (ret == _LDP_LOADED) {
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ __monetary_load_locale(const char *name)
|
|||
int ret;
|
||||
|
||||
ret = __part_load_locale(name, &_monetary_using_locale,
|
||||
_monetary_locale_buf, "LC_MONETARY",
|
||||
&_monetary_locale_buf, "LC_MONETARY",
|
||||
LCMONETARY_SIZE_FULL, LCMONETARY_SIZE_MIN,
|
||||
(const char **)&_monetary_locale);
|
||||
if (ret != _LDP_ERROR)
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ __numeric_load_locale(const char *name)
|
|||
int ret;
|
||||
|
||||
ret = __part_load_locale(name, &_numeric_using_locale,
|
||||
_numeric_locale_buf, "LC_NUMERIC",
|
||||
&_numeric_locale_buf, "LC_NUMERIC",
|
||||
LCNUMERIC_SIZE, LCNUMERIC_SIZE,
|
||||
(const char **)&_numeric_locale);
|
||||
if (ret != _LDP_ERROR)
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ int
|
|||
__time_load_locale(const char *name)
|
||||
{
|
||||
return (__part_load_locale(name, &_time_using_locale,
|
||||
time_locale_buf, "LC_TIME",
|
||||
&time_locale_buf, "LC_TIME",
|
||||
LCTIME_SIZE, LCTIME_SIZE,
|
||||
(const char **)&_time_locale));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue