Tcl Source Code

Check-in [8ffef269a0]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:3564735 Protect against mem corruption when var resolvers misbehave.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-5-branch
Files: files | file ages | folders
SHA1: 8ffef269a04718fa7319fdec9d5c3f1b8cd88fcc
User & Date: dgp 2012-09-11 14:02:58
Context
2012-09-16
15:56
Nicer style test. check-in: ef79a774d6 user: stwo tags: core-8-5-branch
2012-09-12
17:42
tip#404 file locale mcset: mc(fl)(m)set backport from 8.6 check-in: c55455c351 user: oehhar tags: tip404_tcl8-5
2012-09-11
14:02
3564735 Protect against mem corruption when var resolvers misbehave. check-in: 8ffef269a0 user: dgp tags: core-8-5-branch
2012-09-07
14:44
Backport of 2008-12-12 8.6 commit: Fix missing CLOEXEC on internal pipes [2417695] check-in: 662a69f571 user: ferrieux tags: core-8-5-branch
2012-09-06
19:01
3564735 Protection against namespace var resolvers that unexpectedly return a pointer to Var while T... Closed-Leaf check-in: b0ffeaec95 user: dgp tags: bug-3564735
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/tclInt.h.

689
690
691
692
693
694
695

696

697
698
699
700
701

702

703
704
705
706
707
708
709

#define TclClearVarTraceActive(varPtr) \
    (varPtr)->flags &= ~VAR_TRACE_ACTIVE

#define TclSetVarNamespaceVar(varPtr) \
    if (!TclIsVarNamespaceVar(varPtr)) {\
	(varPtr)->flags |= VAR_NAMESPACE_VAR;\

	((VarInHash *)(varPtr))->refCount++;\

    }

#define TclClearVarNamespaceVar(varPtr) \
    if (TclIsVarNamespaceVar(varPtr)) {\
	(varPtr)->flags &= ~VAR_NAMESPACE_VAR;\

	((VarInHash *)(varPtr))->refCount--;\

    }

/*
 * Macros to read various flag bits of variables.
 * The ANSI C "prototypes" for these macros are:
 *
 * MODULE_SCOPE int	TclIsVarScalar(Var *varPtr);







>
|
>





>
|
>







689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713

#define TclClearVarTraceActive(varPtr) \
    (varPtr)->flags &= ~VAR_TRACE_ACTIVE

#define TclSetVarNamespaceVar(varPtr) \
    if (!TclIsVarNamespaceVar(varPtr)) {\
	(varPtr)->flags |= VAR_NAMESPACE_VAR;\
	if (TclIsVarInHash(varPtr)) {\
	    ((VarInHash *)(varPtr))->refCount++;\
	}\
    }

#define TclClearVarNamespaceVar(varPtr) \
    if (TclIsVarNamespaceVar(varPtr)) {\
	(varPtr)->flags &= ~VAR_NAMESPACE_VAR;\
	if (TclIsVarInHash(varPtr)) {\
	    ((VarInHash *)(varPtr))->refCount--;\
	}\
    }

/*
 * Macros to read various flag bits of variables.
 * The ANSI C "prototypes" for these macros are:
 *
 * MODULE_SCOPE int	TclIsVarScalar(Var *varPtr);