1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

dtcreate: fix exit with TT_ERR_PTYPE and fix several sprintf related segfaults.

This commit is contained in:
William Schaub 2012-08-11 04:02:17 -04:00 committed by Jon Trulson
parent fdcbdbe0d0
commit 562da5af1b
4 changed files with 23 additions and 12 deletions

View file

@ -261,6 +261,7 @@ static Widget _Uxbuild_AddFiletype(void)
char *pre, *suf, *title; char *pre, *suf, *title;
XmString emptyString; XmString emptyString;
size_t len;
#define TIGHTNESS 20 #define TIGHTNESS 20
#define ICON_MIN_HEIGHT 83 #define ICON_MIN_HEIGHT 83
@ -276,8 +277,9 @@ static Widget _Uxbuild_AddFiletype(void)
pre = GETMESSAGE(3, 10, "Create Action"); pre = GETMESSAGE(3, 10, "Create Action");
suf = GETMESSAGE(7, 10, "Add Datatype"); suf = GETMESSAGE(7, 10, "Add Datatype");
title = XtMalloc(strlen(pre) + strlen(suf) + 2); len = strlen(pre) + strlen(suf) + 4;
sprintf(title, "%s - %s", pre, suf); title = XtMalloc(len);
snprintf(title,len - 1, "%s - %s", pre, suf);
_UxParent = XtVaCreatePopupShell( "AddFiletype_shell", _UxParent = XtVaCreatePopupShell( "AddFiletype_shell",
xmDialogShellWidgetClass, _UxParent, xmDialogShellWidgetClass, _UxParent,

View file

@ -345,6 +345,7 @@ static void activateCB_CA_FiletypesDelete( Widget UxWidget,
int cnt; int cnt;
Boolean bFound; Boolean bFound;
char *msgPtr1, *msgPtr2, *fmtPtr, *errPtr; char *msgPtr1, *msgPtr2, *fmtPtr, *errPtr;
size_t len;
/**************************************************************************/ /**************************************************************************/
/* Determine the filetypes to delete and delete them. */ /* Determine the filetypes to delete and delete them. */
@ -411,9 +412,9 @@ static void activateCB_CA_FiletypesDelete( Widget UxWidget,
msgPtr2 = XtNewString(GETMESSAGE(5, 125, msgPtr2 = XtNewString(GETMESSAGE(5, 125,
"Please select the Datatype you would like to Delete.")); "Please select the Datatype you would like to Delete."));
fmtPtr = "%s\n%s"; fmtPtr = "%s\n%s";
errPtr = XtMalloc((strlen(msgPtr1) + strlen(msgPtr2) + len = (strlen(msgPtr1) + strlen(msgPtr2) + strlen(fmtPtr) + 2);
strlen(fmtPtr) + 1) * sizeof(char)); errPtr = XtMalloc(len);
sprintf(errPtr, fmtPtr, msgPtr1, msgPtr2); snprintf(errPtr,len - 1, fmtPtr, msgPtr1, msgPtr2);
XtFree(msgPtr2); XtFree(msgPtr2);
XtFree(msgPtr1); XtFree(msgPtr1);
display_error_message(CreateActionAppShell, errPtr); display_error_message(CreateActionAppShell, errPtr);

View file

@ -849,6 +849,7 @@ void activateCB_add_filetype (Widget wid, XtPointer client_data,
char *ptr; char *ptr;
char tmpbuf[50]; char tmpbuf[50];
char *pre, *suf, *title; char *pre, *suf, *title;
size_t len;
if (!CreateActionAppShellCheckFields()) { if (!CreateActionAppShellCheckFields()) {
@ -893,8 +894,9 @@ void activateCB_add_filetype (Widget wid, XtPointer client_data,
pre = GETMESSAGE(3, 10, "Create Action"); pre = GETMESSAGE(3, 10, "Create Action");
suf = GETMESSAGE(7, 10, "Add Datatype"); suf = GETMESSAGE(7, 10, "Add Datatype");
title = XtMalloc(strlen(pre) + strlen(suf) + 2); len = strlen(pre) + strlen(suf) + 4;
sprintf(title, "%s - %s", pre, suf); title = XtMalloc(len);
snprintf(title,len - 1,"%s - %s", pre, suf);
XtVaSetValues (AddFiletype, XtVaSetValues (AddFiletype,
RES_CONVERT (XmNdialogTitle, title ), RES_CONVERT (XmNdialogTitle, title ),
@ -924,11 +926,13 @@ void activateCB_edit_filetype (Widget wid, XtPointer client_data,
int selecteditem; int selecteditem;
char *msgPtr1, *msgPtr2, *fmtPtr, *errPtr; char *msgPtr1, *msgPtr2, *fmtPtr, *errPtr;
char *pre, *suf, *title; char *pre, *suf, *title;
size_t len;
pre = GETMESSAGE(3, 10, "Create Action"); pre = GETMESSAGE(3, 10, "Create Action");
suf = GETMESSAGE(7, 11, "Edit Datatype"); suf = GETMESSAGE(7, 11, "Edit Datatype");
title = XtMalloc(strlen(pre) + strlen(suf) + 2); len = strlen(pre) + strlen(suf) + 4;
sprintf(title, "%s - %s", pre, suf); title = XtMalloc(len);
snprintf(title,len - 1, "%s - %s", pre, suf);
/**************************************************************************/ /**************************************************************************/
/* Determine the selected list item. */ /* Determine the selected list item. */
@ -959,9 +963,10 @@ void activateCB_edit_filetype (Widget wid, XtPointer client_data,
msgPtr2 = XtNewString(GETMESSAGE(5, 130, msgPtr2 = XtNewString(GETMESSAGE(5, 130,
"Please select the Datatype you would like to Edit.")); "Please select the Datatype you would like to Edit."));
fmtPtr = "%s\n%s"; fmtPtr = "%s\n%s";
errPtr = XtMalloc((strlen(msgPtr1) + strlen(msgPtr2) + len = (strlen(msgPtr1) + strlen(msgPtr2) +
strlen(fmtPtr) + 1) * sizeof(char)); strlen(fmtPtr) + 3);
sprintf(errPtr, fmtPtr, msgPtr1, msgPtr2); errPtr = XtMalloc(len);
snprintf(errPtr,len - 1, fmtPtr, msgPtr1, msgPtr2);
XtFree(msgPtr2); XtFree(msgPtr2);
XtFree(msgPtr1); XtFree(msgPtr1);
display_error_message(CreateActionAppShell, errPtr); display_error_message(CreateActionAppShell, errPtr);

View file

@ -548,6 +548,9 @@ DieFromToolTalkError(Widget parent, char *errfmt, Tt_status status)
if (! tt_is_err(status)) return; if (! tt_is_err(status)) return;
statmsg = tt_status_message(status); statmsg = tt_status_message(status);
/* Solaris dtcreate ignores this so we should too */
if(!strncmp("TT_ERR_PTYPE",statmsg,12))
return;
errmsg = XtMalloc(strlen(errfmt) + strlen(statmsg) + 2); errmsg = XtMalloc(strlen(errfmt) + strlen(statmsg) + 2);
sprintf(errmsg, errfmt, statmsg); sprintf(errmsg, errfmt, statmsg);