Fossil SCM
Fix the archive_base_name() routine so that it works even if no project name is defined. Harden the sanitize_name() routine so that it works even if the argument is a NULL pointer. Fix for the problem reported in [forum:/forumpost/31e880a7ea79fb40|forum post 31e880a7e].
Commit
2f27f4b09640acfc8158da4ffd4275abc7d4ce52b8af10e95b2579b68aa1adc7
Parent
334f7f426719372…
1 file changed
+3
-3
+3
-3
| --- src/tar.c | ||
| +++ src/tar.c | ||
| @@ -38,10 +38,11 @@ | ||
| 38 | 38 | ** "_" and "-". Changes are made in-place. |
| 39 | 39 | */ |
| 40 | 40 | static void sanitize_name(char *zName){ |
| 41 | 41 | int i; |
| 42 | 42 | char c; |
| 43 | + if( zName==0 ) return; | |
| 43 | 44 | for(i=0; (c = zName[i])!=0; i++){ |
| 44 | 45 | if( fossil_isupper(c) ){ |
| 45 | 46 | zName[i] = fossil_tolower(c); |
| 46 | 47 | }else if( !fossil_isalnum(c) && c!='_' && c!='-' ){ |
| 47 | 48 | if( c<=0x7f ){ |
| @@ -77,14 +78,13 @@ | ||
| 77 | 78 | } |
| 78 | 79 | zName = db_text(0, |
| 79 | 80 | "SELECT %Q||" |
| 80 | 81 | " strftime('-%%Y%%m%%d%%H%%M%%S-',event.mtime)||" |
| 81 | 82 | " substr(blob.uuid,1,10)" |
| 82 | - " FROM blob, event LEFT JOIN config" | |
| 83 | + " FROM blob, event" | |
| 83 | 84 | " WHERE blob.rid=%d" |
| 84 | - " AND event.objid=%d" | |
| 85 | - " AND config.name='project-name'", | |
| 85 | + " AND event.objid=%d", | |
| 86 | 86 | zPrefix, rid, rid); |
| 87 | 87 | fossil_free(zPrefix); |
| 88 | 88 | sanitize_name(zName); |
| 89 | 89 | return zName; |
| 90 | 90 | } |
| 91 | 91 |
| --- src/tar.c | |
| +++ src/tar.c | |
| @@ -38,10 +38,11 @@ | |
| 38 | ** "_" and "-". Changes are made in-place. |
| 39 | */ |
| 40 | static void sanitize_name(char *zName){ |
| 41 | int i; |
| 42 | char c; |
| 43 | for(i=0; (c = zName[i])!=0; i++){ |
| 44 | if( fossil_isupper(c) ){ |
| 45 | zName[i] = fossil_tolower(c); |
| 46 | }else if( !fossil_isalnum(c) && c!='_' && c!='-' ){ |
| 47 | if( c<=0x7f ){ |
| @@ -77,14 +78,13 @@ | |
| 77 | } |
| 78 | zName = db_text(0, |
| 79 | "SELECT %Q||" |
| 80 | " strftime('-%%Y%%m%%d%%H%%M%%S-',event.mtime)||" |
| 81 | " substr(blob.uuid,1,10)" |
| 82 | " FROM blob, event LEFT JOIN config" |
| 83 | " WHERE blob.rid=%d" |
| 84 | " AND event.objid=%d" |
| 85 | " AND config.name='project-name'", |
| 86 | zPrefix, rid, rid); |
| 87 | fossil_free(zPrefix); |
| 88 | sanitize_name(zName); |
| 89 | return zName; |
| 90 | } |
| 91 |
| --- src/tar.c | |
| +++ src/tar.c | |
| @@ -38,10 +38,11 @@ | |
| 38 | ** "_" and "-". Changes are made in-place. |
| 39 | */ |
| 40 | static void sanitize_name(char *zName){ |
| 41 | int i; |
| 42 | char c; |
| 43 | if( zName==0 ) return; |
| 44 | for(i=0; (c = zName[i])!=0; i++){ |
| 45 | if( fossil_isupper(c) ){ |
| 46 | zName[i] = fossil_tolower(c); |
| 47 | }else if( !fossil_isalnum(c) && c!='_' && c!='-' ){ |
| 48 | if( c<=0x7f ){ |
| @@ -77,14 +78,13 @@ | |
| 78 | } |
| 79 | zName = db_text(0, |
| 80 | "SELECT %Q||" |
| 81 | " strftime('-%%Y%%m%%d%%H%%M%%S-',event.mtime)||" |
| 82 | " substr(blob.uuid,1,10)" |
| 83 | " FROM blob, event" |
| 84 | " WHERE blob.rid=%d" |
| 85 | " AND event.objid=%d", |
| 86 | zPrefix, rid, rid); |
| 87 | fossil_free(zPrefix); |
| 88 | sanitize_name(zName); |
| 89 | return zName; |
| 90 | } |
| 91 |