File CVE-2014-7204.patch of Package ctags

From e23093345c6f63358d979f2c87c57ef4050ba864 Mon Sep 17 00:00:00 2001
From: dfishburn <dfishburn@c5d04d22-be80-434c-894e-aa346cc9e8e8>
Date: Wed, 24 Oct 2012 01:13:13 +0000
Subject: [PATCH] Changed the javascript parser to set the tag's scope rather
 than including it in the tag name.

Patch from Colomban.



git-svn-id: svn://svn.code.sf.net/p/ctags/code/trunk@791 c5d04d22-be80-434c-894e-aa346cc9e8e8
Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
---
 jscript.c |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 51 insertions(+), 3 deletions(-)

Index: ctags-5.8/jscript.c
===================================================================
--- ctags-5.8.orig/jscript.c
+++ ctags-5.8/jscript.c
@@ -215,6 +215,7 @@ static void deleteToken (tokenInfo *cons
  *	 Tag generation functions
  */
 
+/*
 static void makeConstTag (tokenInfo *const token, const jsKind kind)
 {
 	if (JsKinds [kind].enabled && ! token->ignoreTag )
@@ -238,12 +239,13 @@ static void makeJsTag (tokenInfo *const
 
 	if (JsKinds [kind].enabled && ! token->ignoreTag )
 	{
-		/*
+		*
 		 * If a scope has been added to the token, change the token
 		 * string to include the scope when making the tag.
-		 */
+		 *
 		if ( vStringLength(token->scope) > 0 )
 		{
+			*
 			fulltag = vStringNew ();
 			vStringCopy(fulltag, token->scope);
 			vStringCatS (fulltag, ".");
@@ -251,8 +253,54 @@ static void makeJsTag (tokenInfo *const
 			vStringTerminate(fulltag);
 			vStringCopy(token->string, fulltag);
 			vStringDelete (fulltag);
+			*
+ 			jsKind parent_kind = JSTAG_CLASS;
+ 
+ 			* 
+			 * if we're creating a function (and not a method),
+ 			 * guess we're inside another function 
+			 *
+ 			if (kind == JSTAG_FUNCTION)
+ 				parent_kind = JSTAG_FUNCTION;
+ 
+ 			e.extensionFields.scope[0] = JsKinds [parent_kind].name;
+ 			e.extensionFields.scope[1] = vStringValue (token->scope);
 		}
-		makeConstTag (token, kind);
+		* makeConstTag (token, kind); *
+ 		makeTagEntry (&e);
+	}
+}
+*/
+
+static void makeJsTag (tokenInfo *const token, const jsKind kind)
+{
+	if (JsKinds [kind].enabled && ! token->ignoreTag )
+	{
+		const char *const name = vStringValue (token->string);
+		tagEntryInfo e;
+		initTagEntry (&e, name);
+
+		e.lineNumber   = token->lineNumber;
+		e.filePosition = token->filePosition;
+		e.kindName	   = JsKinds [kind].name;
+		e.kind		   = JsKinds [kind].letter;
+
+		if ( vStringLength(token->scope) > 0 )
+		{
+			jsKind parent_kind = JSTAG_CLASS;
+
+			/* 
+			 * If we're creating a function (and not a method),
+			 * guess we're inside another function 
+			 */
+			if (kind == JSTAG_FUNCTION)
+				parent_kind = JSTAG_FUNCTION;
+
+			e.extensionFields.scope[0] = JsKinds [parent_kind].name;
+			e.extensionFields.scope[1] = vStringValue (token->scope);
+		}
+
+		makeTagEntry (&e);
 	}
 }
 
openSUSE Build Service is sponsored by