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].

drh 2025-10-23 11:33 trunk
Commit 2f27f4b09640acfc8158da4ffd4275abc7d4ce52b8af10e95b2579b68aa1adc7
1 file changed +3 -3
+3 -3
--- src/tar.c
+++ src/tar.c
@@ -38,10 +38,11 @@
3838
** "_" and "-". Changes are made in-place.
3939
*/
4040
static void sanitize_name(char *zName){
4141
int i;
4242
char c;
43
+ if( zName==0 ) return;
4344
for(i=0; (c = zName[i])!=0; i++){
4445
if( fossil_isupper(c) ){
4546
zName[i] = fossil_tolower(c);
4647
}else if( !fossil_isalnum(c) && c!='_' && c!='-' ){
4748
if( c<=0x7f ){
@@ -77,14 +78,13 @@
7778
}
7879
zName = db_text(0,
7980
"SELECT %Q||"
8081
" strftime('-%%Y%%m%%d%%H%%M%%S-',event.mtime)||"
8182
" substr(blob.uuid,1,10)"
82
- " FROM blob, event LEFT JOIN config"
83
+ " FROM blob, event"
8384
" WHERE blob.rid=%d"
84
- " AND event.objid=%d"
85
- " AND config.name='project-name'",
85
+ " AND event.objid=%d",
8686
zPrefix, rid, rid);
8787
fossil_free(zPrefix);
8888
sanitize_name(zName);
8989
return zName;
9090
}
9191
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button