[PATCH] libx11:lcDefConv.c:fix use before check
walter harms
wharms at bfs.de
Wed Jun 4 03:07:25 PDT 2014
Do not use variables before checked for NULL.
Signed-off-by: wharms <wharms at bfs.de>
---
modules/lc/def/lcDefConv.c | 35 +++++++++++++++++++++++++----------
1 file changed, 25 insertions(+), 10 deletions(-)
diff --git a/modules/lc/def/lcDefConv.c b/modules/lc/def/lcDefConv.c
index 3cd5c22..2cae504 100644
--- a/modules/lc/def/lcDefConv.c
+++ b/modules/lc/def/lcDefConv.c
@@ -149,13 +149,14 @@ def_mbstowcs(
XPointer *args,
int num_args)
{
- const char *src = (const char *) *from;
+ const char *src;
wchar_t *dst = (wchar_t *) * to;
State state = (State) conv->state;
int unconv = 0;
if (from == NULL || *from == NULL)
return 0;
+ src = (const char *) *from;
while (*from_left && *to_left) {
(*from_left)--;
@@ -181,14 +182,16 @@ def_wcstombs(
XPointer *args,
int num_args)
{
- const wchar_t *src = (const wchar_t *) * from;
+ const wchar_t *src;
char *dst = (char *) *to;
State state = (State) conv->state;
char ch[MB_LEN_MAX];
int unconv = 0;
if (from == NULL || *from == NULL)
- return 0;
+ return 0;
+
+ src = (const wchar_t *) * from;
while (*from_left && *to_left) {
(*from_left)--;
@@ -214,7 +217,7 @@ mbstostr(
XPointer *args,
int num_args)
{
- const char *src = (const char *) *from;
+ const char *src;
char *dst = (char *) *to;
CodeSet codeset;
State state = (State) conv->state;
@@ -223,6 +226,7 @@ mbstostr(
if (from == NULL || *from == NULL)
return 0;
+ src = (const char *) *from;
while (*from_left && *to_left) {
ch = *src++;
@@ -251,7 +255,7 @@ wcstostr(
XPointer *args,
int num_args)
{
- const wchar_t *src = (const wchar_t *) *from;
+ const wchar_t *src;
char *dst = (char *) *to;
CodeSet codeset;
State state = (State) conv->state;
@@ -261,6 +265,8 @@ wcstostr(
if (from == NULL || *from == NULL)
return 0;
+ src = (const wchar_t *) *from;
+
while (*from_left && *to_left) {
(*from_left)--;
if (state->WCtoMB (state, *src++, ch)) {
@@ -290,7 +296,7 @@ mbstocs(
XPointer *args,
int num_args)
{
- const char *src = (const char *) *from;
+ const char *src;
char *dst = (char *) *to;
int length;
State state = (State) conv->state;
@@ -299,6 +305,7 @@ mbstocs(
if (from == NULL || *from == NULL)
return 0;
+ src = (const char *) *from;
length = min(*from_left, *to_left);
@@ -336,7 +343,7 @@ wcstocs(
XPointer *args,
int num_args)
{
- const wchar_t *src = (const wchar_t *) * from;
+ const wchar_t *src;
char *dst = (char *) *to;
State state = (State) conv->state;
char cur_side = 0, ch[MB_LEN_MAX];
@@ -346,6 +353,8 @@ wcstocs(
if (from == NULL || *from == NULL)
return 0;
+ src = (const wchar_t *) * from;
+
while (*from_left) {
if ((found = state->WCtoMB (state, *src, ch)))
break;
@@ -398,7 +407,7 @@ cstombs(
XPointer *args,
int num_args)
{
- const char *src = (const char *) *from;
+ const char *src;
char *dst = (char *) *to;
CodeSet codeset;
XlcCharSet charset;
@@ -410,6 +419,8 @@ cstombs(
if (from == NULL || *from == NULL)
return 0;
+ src = (const char *) *from;
+
if (num_args > 0) {
charset = (XlcCharSet) args[0];
if (charset == NULL)
@@ -467,7 +478,7 @@ cstowcs(
XPointer *args,
int num_args)
{
- const char *src = (const char *) *from;
+ const char *src;
wchar_t *dst = (wchar_t *) * to;
CodeSet codeset;
XlcCharSet charset;
@@ -479,6 +490,8 @@ cstowcs(
if (from == NULL || *from == NULL)
return 0;
+ src= (const char *) *from;
+
if (num_args > 0) {
charset = (XlcCharSet) args[0];
if (charset == NULL)
@@ -539,13 +552,15 @@ strtombs(
XPointer *args,
int num_args)
{
- const char *src = (const char *) *from;
+ const char *src;
char *dst = (char *) *to;
int length;
if (from == NULL || *from == NULL)
return 0;
+ src = (const char *) *from;
+
length = min(*from_left, *to_left);
while (length) {
*dst++ = *src++;
--
1.8.4.5
More information about the xorg-devel
mailing list