From c8632256e439161b9593f766d2e9061e41a0cdd3 Mon Sep 17 00:00:00 2001
From: PeiYong Zhang <peiyongz@apache.org>
Date: Thu, 4 Jul 2002 22:19:13 +0000
Subject: [PATCH] Bug# 10482: XMLUri crashes with empty fragment.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@173949 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/util/XMLUri.cpp | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/xercesc/util/XMLUri.cpp b/src/xercesc/util/XMLUri.cpp
index 0a4fc81c1..e7500981c 100644
--- a/src/xercesc/util/XMLUri.cpp
+++ b/src/xercesc/util/XMLUri.cpp
@@ -794,13 +794,25 @@ void XMLUri::initializePath(const XMLCh* const uriSpec)
         }
 
         if (getFragment())
-        {
             delete [] fFragment;
-        }
-
-        fFragment = new XMLCh[index - start + 1];
-        XMLString::subString(fFragment, uriSpec, start, index);
 
+        //make sure that there is something following the '#'
+        if (index > start)
+        {
+            fFragment = new XMLCh[index - start + 1];
+            XMLString::subString(fFragment, uriSpec, start, index);
+        }
+        else 
+        {
+            // RFC 2396, 4.0. URI Reference
+            // URI-reference = [absoulteURI | relativeURI] [# fragment]
+            //
+            // RFC 2396, 4.1. Fragment Identifier
+            // fragment = *uric 
+            // 
+            // empty fragment is valid
+            fFragment = 0;
+        }
     }
 
 }
-- 
GitLab