aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Dialog.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Dialog.c b/nx-X11/programs/Xserver/hw/nxagent/Dialog.c
index c20a6a475..2d4eb6229 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Dialog.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Dialog.c
@@ -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.