Fossil SCM

Protect against Tcl commands with no objProc.

mistachkin 2011-08-29 00:54 tcl-integration
Commit 8f6a03f7d18783a83192fb4e7f5c217b58ed5655
1 file changed +6
--- src/th_tcl.c
+++ src/th_tcl.c
@@ -184,10 +184,16 @@
184184
if( !command || Tcl_GetCommandInfoFromToken(command,&cmdInfo)==0 ){
185185
Th_ErrorMessage(interp, "Tcl command not found:", argv[1], argl[1]);
186186
Tcl_DecrRefCount(objPtr);
187187
Tcl_Release((ClientData)tclInterp);
188188
return TH_ERROR;
189
+ }
190
+ if( !cmdInfo.objProc ){
191
+ Th_ErrorMessage(interp, "Cannot invoke Tcl command:", argv[1], argl[1]);
192
+ Tcl_DecrRefCount(objPtr);
193
+ Tcl_Release((ClientData)tclInterp);
194
+ return TH_ERROR;
189195
}
190196
Tcl_DecrRefCount(objPtr);
191197
COPY_ARGV_TO_OBJV();
192198
Tcl_ResetResult(tclInterp);
193199
rc = cmdInfo.objProc(cmdInfo.objClientData, tclInterp, objc, objv);
194200
--- src/th_tcl.c
+++ src/th_tcl.c
@@ -184,10 +184,16 @@
184 if( !command || Tcl_GetCommandInfoFromToken(command,&cmdInfo)==0 ){
185 Th_ErrorMessage(interp, "Tcl command not found:", argv[1], argl[1]);
186 Tcl_DecrRefCount(objPtr);
187 Tcl_Release((ClientData)tclInterp);
188 return TH_ERROR;
 
 
 
 
 
 
189 }
190 Tcl_DecrRefCount(objPtr);
191 COPY_ARGV_TO_OBJV();
192 Tcl_ResetResult(tclInterp);
193 rc = cmdInfo.objProc(cmdInfo.objClientData, tclInterp, objc, objv);
194
--- src/th_tcl.c
+++ src/th_tcl.c
@@ -184,10 +184,16 @@
184 if( !command || Tcl_GetCommandInfoFromToken(command,&cmdInfo)==0 ){
185 Th_ErrorMessage(interp, "Tcl command not found:", argv[1], argl[1]);
186 Tcl_DecrRefCount(objPtr);
187 Tcl_Release((ClientData)tclInterp);
188 return TH_ERROR;
189 }
190 if( !cmdInfo.objProc ){
191 Th_ErrorMessage(interp, "Cannot invoke Tcl command:", argv[1], argl[1]);
192 Tcl_DecrRefCount(objPtr);
193 Tcl_Release((ClientData)tclInterp);
194 return TH_ERROR;
195 }
196 Tcl_DecrRefCount(objPtr);
197 COPY_ARGV_TO_OBJV();
198 Tcl_ResetResult(tclInterp);
199 rc = cmdInfo.objProc(cmdInfo.objClientData, tclInterp, objc, objv);
200

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button