aboutsummaryrefslogtreecommitdiff
path: root/src/os_unix.c
diff options
context:
space:
mode:
authordan <Dan Kennedy>2023-01-10 14:31:56 +0000
committerdan <Dan Kennedy>2023-01-10 14:31:56 +0000
commit2e77734b982d6b64766b51fba5113d62cd44324f (patch)
tree0fdde5ae5d5f75c0cea36e6aee38ccf509f2a977 /src/os_unix.c
parentbf395ec58e00e9997fb852ec71dcd327839da4c5 (diff)
downloadsqlite-2e77734b982d6b64766b51fba5113d62cd44324f.tar.gz
sqlite-2e77734b982d6b64766b51fba5113d62cd44324f.zip
Fix handling of unix paths that contain ".." components such that "/" is considered its own parent directory.
FossilOrigin-Name: 3c6cadb396de3981bd950eddd532daa8134bd4bf22c578620e323835c96a8500
Diffstat (limited to 'src/os_unix.c')
-rw-r--r--src/os_unix.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/os_unix.c b/src/os_unix.c
index d248703e9..c3359f1bc 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -6462,12 +6462,10 @@ static void appendOnePathElement(
if( zName[0]=='.' ){
if( nName==1 ) return;
if( zName[1]=='.' && nName==2 ){
- if( pPath->nUsed<=1 ){
- pPath->rc = SQLITE_ERROR;
- return;
+ if( pPath->nUsed>1 ){
+ assert( pPath->zOut[0]=='/' );
+ while( pPath->zOut[--pPath->nUsed]!='/' ){}
}
- assert( pPath->zOut[0]=='/' );
- while( pPath->zOut[--pPath->nUsed]!='/' ){}
return;
}
}