Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dimbor
nx-libs
Commits
057ce728
Unverified
Commit
057ce728
authored
Jan 05, 2020
by
Mike Gabriel
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'uli42-pr/strings_fixes' into 3.6.x
Attributes GH PR #884:
https://github.com/ArcticaProject/nx-libs/pull/884
parents
46ef20bd
80b6d6b9
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
97 additions
and
125 deletions
+97
-125
Args.c
nx-X11/programs/Xserver/hw/nxagent/Args.c
+11
-1
Dialog.c
nx-X11/programs/Xserver/hw/nxagent/Dialog.c
+14
-4
Error.c
nx-X11/programs/Xserver/hw/nxagent/Error.c
+71
-113
Error.h
nx-X11/programs/Xserver/hw/nxagent/Error.h
+1
-2
Keyboard.c
nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
+0
-5
No files found.
nx-X11/programs/Xserver/hw/nxagent/Args.c
View file @
057ce728
...
...
@@ -1296,7 +1296,17 @@ static void nxagentParseSingleOption(char *name, char *value)
}
else
if
(
strcmp
(
name
,
"clients"
)
==
0
)
{
snprintf
(
nxagentClientsLogName
,
NXAGENTCLIENTSLOGNAMELENGTH
,
"%s"
,
value
);
char
*
new
=
strdup
(
value
);
if
(
new
)
{
SAFE_free
(
nxagentClientsLogName
);
nxagentClientsLogName
=
new
;
}
else
{
fprintf
(
stderr
,
"Warning: Ignoring option [%s] because of memory problems
\n
"
,
validateString
(
name
));
}
return
;
}
else
if
(
strcmp
(
name
,
"client"
)
==
0
)
...
...
nx-X11/programs/Xserver/hw/nxagent/Dialog.c
View file @
057ce728
...
...
@@ -40,6 +40,7 @@
#include "Args.h"
#include "Display.h"
#include "Dialog.h"
#include "Utils.h"
#include <nx/NX.h>
#include "compext/Compext.h"
...
...
@@ -182,7 +183,6 @@ void nxagentResetDialog(int pid)
void
nxagentLaunchDialog
(
DialogType
dialogType
)
{
char
dialogDisplay
[
256
];
sigset_t
set
,
oldSet
;
int
*
pid
;
char
*
type
;
...
...
@@ -302,13 +302,23 @@ void nxagentLaunchDialog(DialogType dialogType)
fprintf
(
stderr
,
"nxagentLaunchDialog: Launching dialog type [%d] message [%s].
\n
"
,
type
,
message
);
#endif
char
*
dialogDisplay
=
NULL
;
int
len
=
0
;
if
(
dialogType
==
DIALOG_FAILED_RECONNECTION
)
{
snprintf
(
dialogDisplay
,
sizeof
(
dialogDisplay
)
,
"%s"
,
nxagentDisplayName
);
len
=
asprintf
(
&
dialogDisplay
,
"%s"
,
nxagentDisplayName
);
}
else
{
snprintf
(
dialogDisplay
,
sizeof
(
dialogDisplay
),
":%s"
,
display
);
len
=
asprintf
(
&
dialogDisplay
,
":%s"
,
display
);
}
if
(
len
==
-
1
)
{
#ifdef DEBUG
fprintf
(
stderr
,
"%s: could not allocate display string.
\n
"
,
__func__
);
#endif
return
;
}
/*
...
...
@@ -329,7 +339,7 @@ void nxagentLaunchDialog(DialogType dialogType)
DECODE_DIALOG_TYPE
(
dialogType
),
*
pid
,
dialogDisplay
);
#endif
dialogDisplay
[
0
]
=
'\0'
;
SAFE_free
(
dialogDisplay
)
;
/*
* Restore the previous set of blocked signal.
...
...
nx-X11/programs/Xserver/hw/nxagent/Error.c
View file @
057ce728
...
...
@@ -72,32 +72,29 @@ static int nxagentStderrBackup = -1;
static
int
nxagentClientsLog
=
-
1
;
#define DEFAULT_STRING_LENGTH 256
/*
* Clients log file name.
*/
char
nxagentClientsLogName
[
NXAGENTCLIENTSLOGNAMELENGTH
]
=
{
0
}
;
char
*
nxagentClientsLogName
=
NULL
;
/*
* User's home.
*/
static
char
nxagentHomeDir
[
DEFAULT_STRING_LENGTH
]
=
{
0
}
;
static
char
*
nxagentHomeDir
=
NULL
;
/*
* NX root directory.
*/
static
char
nxagentRootDir
[
DEFAULT_STRING_LENGTH
]
=
{
0
}
;
static
char
*
nxagentRootDir
=
NULL
;
/*
* Session log Directory.
*/
static
char
nxagentSessionDir
[
DEFAULT_STRING_LENGTH
]
=
{
0
}
;
static
char
*
nxagentSessionDir
=
NULL
;
void
nxagentGetClientsPath
(
void
);
...
...
@@ -250,12 +247,12 @@ int nxagentExitHandler(const char *message)
void
nxagentOpenClientsLogFile
(
void
)
{
if
(
*
nxagentClientsLogName
==
'\0'
)
if
(
!
nxagentClientsLogName
)
{
nxagentGetClientsPath
();
}
if
(
nxagentClientsLogName
!=
NULL
&&
*
nxagentClientsLogName
!=
'\0'
)
if
(
nxagentClientsLogName
&&
*
nxagentClientsLogName
!=
'\0'
)
{
nxagentClientsLog
=
open
(
nxagentClientsLogName
,
O_RDWR
|
O_CREAT
|
O_APPEND
,
0600
);
...
...
@@ -323,9 +320,13 @@ void nxagentEndRedirectToClientsLog(void)
nxagentCloseClientsLogFile
();
}
/*
* returns a pointer to the static nxagentHomeDir. The caller must not free
* this pointer!
*/
char
*
nxagentGetHomePath
(
void
)
{
if
(
*
nxagentHomeDir
==
'\0'
)
if
(
!
nxagentHomeDir
)
{
/*
* Check the NX_HOME environment.
...
...
@@ -333,56 +334,51 @@ char *nxagentGetHomePath(void)
char
*
homeEnv
=
getenv
(
"NX_HOME"
);
if
(
homeEnv
==
NULL
||
*
homeEnv
==
'\0'
)
if
(
!
homeEnv
||
*
homeEnv
==
'\0'
)
{
#ifdef TEST
fprintf
(
stderr
,
"
nxagentGetHomePath: No environment for NX_HOME.
\n
"
);
fprintf
(
stderr
,
"
%s: No environment for NX_HOME.
\n
"
,
__func__
);
#endif
homeEnv
=
getenv
(
"HOME"
);
if
(
homeEnv
==
NULL
||
*
homeEnv
==
'\0'
)
if
(
!
homeEnv
||
*
homeEnv
==
'\0'
)
{
#ifdef PANIC
fprintf
(
stderr
,
"
nxagentGetHomePath: PANIC! No environment for HOME.
\n
"
);
fprintf
(
stderr
,
"
%s: PANIC! No environment for HOME.
\n
"
,
__func__
);
#endif
return
NULL
;
}
}
if
(
strlen
(
homeEnv
)
>
DEFAULT_STRING_LENGTH
-
1
)
/* FIXME: this is currently never freed as it is thought to last
over the complete runtime. We should add a free call at shutdown
eventually... */
nxagentHomeDir
=
strdup
(
homeEnv
);
if
(
!
nxagentHomeDir
)
{
#ifdef PANIC
fprintf
(
stderr
,
"nxagentGetHomePath: PANIC! Invalid value for the NX "
"home directory '%s'.
\n
"
,
homeEnv
);
fprintf
(
stderr
,
"%s: PANIC! Can't allocate memory for the home path.
\n
"
,
__func__
);
#endif
return
NULL
;
}
snprintf
(
nxagentHomeDir
,
DEFAULT_STRING_LENGTH
,
"%s"
,
homeEnv
);
#ifdef TEST
fprintf
(
stderr
,
"
nxagentGetHomePath: Assuming NX user's home directory '%s'.
\n
"
,
nxagentHomeDir
);
fprintf
(
stderr
,
"
%s: Assuming NX user's home directory '%s'.
\n
"
,
__func__
,
nxagentHomeDir
);
#endif
}
char
*
homePath
=
strdup
(
nxagentHomeDir
);
if
(
homePath
==
NULL
)
{
#ifdef PANIC
fprintf
(
stderr
,
"nxagentGetHomePath: PANIC! Can't allocate memory for the home path.
\n
"
);
#endif
return
NULL
;
}
return
homePath
;
return
nxagentHomeDir
;
}
/*
* returns a pointer to the static nxagentRootDir. The caller must not free
* this pointer!
*/
char
*
nxagentGetRootPath
(
void
)
{
if
(
*
nxagentRootDir
==
'\0'
)
if
(
!
nxagentRootDir
)
{
/*
* Check the NX_ROOT environment.
...
...
@@ -390,10 +386,10 @@ char *nxagentGetRootPath(void)
char
*
rootEnv
=
getenv
(
"NX_ROOT"
);
if
(
rootEnv
==
NULL
||
*
rootEnv
==
'\0'
)
if
(
!
rootEnv
||
*
rootEnv
==
'\0'
)
{
#ifdef TEST
fprintf
(
stderr
,
"
nxagentGetRootPath: WARNING! No environment for NX_ROOT.
\n
"
);
fprintf
(
stderr
,
"
%s: WARNING! No environment for NX_ROOT.
\n
"
,
__func__
);
#endif
/*
...
...
@@ -403,32 +399,28 @@ char *nxagentGetRootPath(void)
char
*
homeEnv
=
nxagentGetHomePath
();
if
(
homeEnv
==
NULL
)
if
(
!
homeEnv
)
{
return
NULL
;
}
if
(
strlen
(
homeEnv
)
>
DEFAULT_STRING_LENGTH
-
strlen
(
"/.nx"
)
-
1
)
/* FIXME: this is currently never freed as it is thought to last
over the complete runtime. We should add a free call at shutdown
eventually... */
int
len
=
asprintf
(
&
nxagentRootDir
,
"%s/.nx"
,
homeEnv
);
if
(
len
==
-
1
)
{
#ifdef PANIC
fprintf
(
stderr
,
"nxagentGetRootPath: PANIC! Invalid value for the NX "
"home directory '%s'.
\n
"
,
homeEnv
);
fprintf
(
stderr
,
"%s: could not build NX Root Dir string
\n
"
,
__func__
);
#endif
SAFE_free
(
homeEnv
);
return
NULL
;
}
#ifdef TEST
fprintf
(
stderr
,
"
nxagentGetRootPath: Assuming NX root directory in '%s'.
\n
"
,
homeEnv
);
fprintf
(
stderr
,
"
%s: Assuming NX root directory in '%s'.
\n
"
,
__func__
,
homeEnv
);
#endif
snprintf
(
nxagentRootDir
,
DEFAULT_STRING_LENGTH
,
"%s/.nx"
,
homeEnv
);
SAFE_free
(
homeEnv
);
/*
* Create the NX root directory.
*/
...
...
@@ -439,7 +431,7 @@ char *nxagentGetRootPath(void)
if
(
mkdir
(
nxagentRootDir
,
0777
)
<
0
&&
(
errno
!=
EEXIST
))
{
#ifdef PANIC
fprintf
(
stderr
,
"
nxagentGetRootPath: PANIC! Can't create directory '%s'. Error is %d '%s'.
\n
"
,
fprintf
(
stderr
,
"
%s: PANIC! Can't create directory '%s'. Error is %d '%s'.
\n
"
,
__func__
,
nxagentRootDir
,
errno
,
strerror
(
errno
));
#endif
...
...
@@ -449,43 +441,29 @@ char *nxagentGetRootPath(void)
}
else
{
if
(
strlen
(
rootEnv
)
>
DEFAULT_STRING_LENGTH
-
1
)
{
#ifdef PANIC
fprintf
(
stderr
,
"nxagentGetRootPath: PANIC! Invalid value for the NX root directory '%s'.
\n
"
,
rootEnv
);
#endif
return
NULL
;
}
snprintf
(
nxagentRootDir
,
DEFAULT_STRING_LENGTH
,
"%s"
,
rootEnv
);
/* FIXME: this is currently never freed as it is thought to last
over the complete runtime. We should add a free call
eventually... */
nxagentRootDir
=
strdup
(
rootEnv
);
}
#ifdef TEST
fprintf
(
stderr
,
"
nxagentGetRootPath: Assuming NX root directory '%s'.
\n
"
,
fprintf
(
stderr
,
"
%s: Assuming NX root directory '%s'.
\n
"
,
__func__
,
nxagentRootDir
);
#endif
}
char
*
rootPath
=
strdup
(
nxagentRootDir
);
if
(
rootPath
==
NULL
)
{
#ifdef PANIC
fprintf
(
stderr
,
"nxagentGetRootPath: Can't allocate memory for the root path.
\n
"
);
#endif
return
NULL
;
}
return
rootPath
;
return
nxagentRootDir
;
}
/*
* returns a pointer to the static nxagentSessionDir. The caller must not free
* this pointer!
*/
char
*
nxagentGetSessionPath
(
void
)
{
if
(
*
nxagentSessionDir
==
'\0'
)
if
(
!
nxagentSessionDir
)
{
/*
* If nxagentSessionId does not exist we assume that the
...
...
@@ -496,7 +474,7 @@ char *nxagentGetSessionPath(void)
if
(
*
nxagentSessionId
==
'\0'
)
{
#ifdef TEST
fprintf
(
stderr
,
"
nxagentGetSessionPath: Session id does not exist. Assuming session path NULL.
\n
"
);
fprintf
(
stderr
,
"
%s: Session id does not exist. Assuming session path NULL.
\n
"
,
__func__
);
#endif
return
NULL
;
...
...
@@ -504,90 +482,70 @@ char *nxagentGetSessionPath(void)
char
*
rootPath
=
nxagentGetRootPath
();
if
(
rootPath
==
NULL
)
if
(
!
rootPath
)
{
return
NULL
;
}
/* FIXME: necessary? */
snprintf
(
nxagentSessionDir
,
DEFAULT_STRING_LENGTH
,
"%s"
,
rootPath
);
/* FIXME: this is currently only freed if the dir cannot be created
and will last over the runtime otherwise. We should add a free call
eventually... */
int
len
=
asprintf
(
&
nxagentSessionDir
,
"%s/C-%s"
,
rootPath
,
nxagentSessionId
);
if
(
strlen
(
nxagentSessionDir
)
+
strlen
(
"/C-"
)
+
strlen
(
nxagentSessionId
)
>
DEFAULT_STRING_LENGTH
-
1
)
if
(
len
==
-
1
)
{
#ifdef PANIC
fprintf
(
stderr
,
"nxagentGetSessionPath: PANIC!: Invalid value for the NX session directory '%s'.
\n
"
,
nxagentSessionDir
);
fprintf
(
stderr
,
"%s: PANIC!: Could not alloc sessiondir string'.
\n
"
,
__func__
);
#endif
SAFE_free
(
rootPath
);
return
NULL
;
}
snprintf
(
nxagentSessionDir
,
DEFAULT_STRING_LENGTH
,
"%s/C-%s"
,
rootPath
,
nxagentSessionId
);
SAFE_free
(
rootPath
);
struct
stat
dirStat
;
if
((
stat
(
nxagentSessionDir
,
&
dirStat
)
==
-
1
)
&&
(
errno
==
ENOENT
))
{
if
(
mkdir
(
nxagentSessionDir
,
0777
)
<
0
&&
(
errno
!=
EEXIST
))
{
#ifdef PANIC
fprintf
(
stderr
,
"
nxagentGetSessionPath: PANIC! Can't create directory '%s'. Error is %d '%s'.
\n
"
,
fprintf
(
stderr
,
"
%s: PANIC! Can't create directory '%s'. Error is %d '%s'.
\n
"
,
__func__
,
nxagentSessionDir
,
errno
,
strerror
(
errno
));
#endif
SAFE_free
(
nxagentSessionDir
);
return
NULL
;
}
}
#ifdef TEST
fprintf
(
stderr
,
"nxagentGetSessionPath: NX session is '%s'.
\n
"
,
nxagentSessionDir
);
fprintf
(
stderr
,
"%s: NX session is '%s'.
\n
"
,
__func__
,
nxagentSessionDir
);
#endif
}
char
*
sessionPath
=
strdup
(
nxagentSessionDir
);
if
(
sessionPath
==
NULL
)
{
#ifdef PANIC
fprintf
(
stderr
,
"nxagentGetSessionPath:: PANIC! Can't allocate memory for the session path.
\n
"
);
#endif
return
NULL
;
}
return
sessionPath
;
return
nxagentSessionDir
;
}
void
nxagentGetClientsPath
(
void
)
{
if
(
*
nxagentClientsLogName
==
'\0'
)
if
(
!
nxagentClientsLogName
)
{
char
*
sessionPath
=
nxagentGetSessionPath
();
if
(
sessionPath
==
NULL
)
if
(
!
sessionPath
)
{
return
;
}
if
(
strlen
(
sessionPath
)
+
strlen
(
"/clients"
)
>
NXAGENTCLIENTSLOGNAMELENGTH
-
1
)
/* FIXME: this is currently never freed as it is thought to last
over the complete runtime. We should add a free call at shutdown
eventually... */
int
len
=
asprintf
(
&
nxagentClientsLogName
,
"%s/clients"
,
sessionPath
);
if
(
len
==
-
1
)
{
#ifdef PANIC
fprintf
(
stderr
,
"
nxagentGetClientsPath: PANIC! Invalid value for the NX clients Log File Path ''.
\n
"
);
fprintf
(
stderr
,
"
%s: PANIC! Could not alloc NX clients Log File Path.
\n
"
,
__func__
);
#endif
SAFE_free
(
sessionPath
);
return
;
}
snprintf
(
nxagentClientsLogName
,
NXAGENTCLIENTSLOGNAMELENGTH
,
"%s/clients"
,
sessionPath
);
SAFE_free
(
sessionPath
);
}
return
;
...
...
nx-X11/programs/Xserver/hw/nxagent/Error.h
View file @
057ce728
...
...
@@ -30,8 +30,7 @@
* Clients log file name.
*/
#define NXAGENTCLIENTSLOGNAMELENGTH 256
extern
char
nxagentClientsLogName
[
NXAGENTCLIENTSLOGNAMELENGTH
];
extern
char
*
nxagentClientsLogName
;
extern
char
nxagentVerbose
;
...
...
nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
View file @
057ce728
...
...
@@ -1449,13 +1449,8 @@ static char* getKeyboardFilePath(void)
{
if
((
asprintf
(
&
keyboard_file_path
,
"%s/keyboard"
,
sessionpath
)
==
-
1
))
{
SAFE_free
(
sessionpath
);
FatalError
(
"malloc for keyboard file path failed."
);
}
else
{
SAFE_free
(
sessionpath
);
}
}
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment