Fossil SCM
When checking for win32 absolute paths, I added a check to make sure we don't overstep the bounds of a string
Commit
af3a751841e268336fea30c2d6499c2d85e6d71e
Parent
798a48ee468a150…
1 file changed
+2
-1
+2
-1
| --- src/file.c | ||
| +++ src/file.c | ||
| @@ -182,11 +182,12 @@ | ||
| 182 | 182 | ** Remove redundant / characters |
| 183 | 183 | ** Remove all /./ path elements. |
| 184 | 184 | ** Convert /A/../ to just / |
| 185 | 185 | */ |
| 186 | 186 | void file_canonical_name(const char *zOrigName, Blob *pOut){ |
| 187 | - if( zOrigName[0]=='/' || (zOrigName[1]==':' && zOrigName[2]=='\\') ){ | |
| 187 | + if( zOrigName[0]=='/' | |
| 188 | + || (strlen(zOrigName)>3 && zOrigName[1]==':' && zOrigName[2]=='\\') ){ | |
| 188 | 189 | blob_set(pOut, zOrigName); |
| 189 | 190 | blob_materialize(pOut); |
| 190 | 191 | }else{ |
| 191 | 192 | char zPwd[2000]; |
| 192 | 193 | if( getcwd(zPwd, sizeof(zPwd)-20)==0 ){ |
| 193 | 194 |
| --- src/file.c | |
| +++ src/file.c | |
| @@ -182,11 +182,12 @@ | |
| 182 | ** Remove redundant / characters |
| 183 | ** Remove all /./ path elements. |
| 184 | ** Convert /A/../ to just / |
| 185 | */ |
| 186 | void file_canonical_name(const char *zOrigName, Blob *pOut){ |
| 187 | if( zOrigName[0]=='/' || (zOrigName[1]==':' && zOrigName[2]=='\\') ){ |
| 188 | blob_set(pOut, zOrigName); |
| 189 | blob_materialize(pOut); |
| 190 | }else{ |
| 191 | char zPwd[2000]; |
| 192 | if( getcwd(zPwd, sizeof(zPwd)-20)==0 ){ |
| 193 |
| --- src/file.c | |
| +++ src/file.c | |
| @@ -182,11 +182,12 @@ | |
| 182 | ** Remove redundant / characters |
| 183 | ** Remove all /./ path elements. |
| 184 | ** Convert /A/../ to just / |
| 185 | */ |
| 186 | void file_canonical_name(const char *zOrigName, Blob *pOut){ |
| 187 | if( zOrigName[0]=='/' |
| 188 | || (strlen(zOrigName)>3 && zOrigName[1]==':' && zOrigName[2]=='\\') ){ |
| 189 | blob_set(pOut, zOrigName); |
| 190 | blob_materialize(pOut); |
| 191 | }else{ |
| 192 | char zPwd[2000]; |
| 193 | if( getcwd(zPwd, sizeof(zPwd)-20)==0 ){ |
| 194 |