Fossil SCM

Make sure a user does not attempt to "fossil add" the manifest or the _FOSSIL_ files.

drh 2007-08-08 15:22 trunk
Commit 20bcbcf2f2b2518f1745f473337ce5c524e2a4cf
1 file changed +6 -3
+6 -3
--- src/add.c
+++ src/add.c
@@ -53,17 +53,20 @@
5353
5454
zName = mprintf("%s", g.argv[i]);
5555
isDir = file_isdir(zName);
5656
if( isDir==1 ) continue;
5757
if( isDir==0 ){
58
- fossil_panic("not found: %s\n", zName);
58
+ fossil_fatal("not found: %s", zName);
5959
}
6060
if( isDir==2 && access(zName, R_OK) ){
61
- fossil_panic("cannot open %s\n", zName);
61
+ fossil_fatal("cannot open %s", zName);
6262
}
6363
file_tree_name(zName, &pathname);
6464
zPath = blob_str(&pathname);
65
+ if( strcmp(zPath, "manifest")==0 || strcmp(zPath, "_FOSSIL_")==0 ){
66
+ fossil_fatal("cannot add %s", zPath);
67
+ }
6568
if( db_exists("SELECT 1 FROM vfile WHERE pathname=%Q", zPath) ){
6669
db_multi_exec("UPDATE vfile SET deleted=0 WHERE pathname=%Q", zPath);
6770
}else{
6871
db_multi_exec(
6972
"INSERT INTO vfile(vid,deleted,rid,mrid,pathname)"
@@ -99,15 +102,15 @@
99102
zName = mprintf("%s", g.argv[i]);
100103
file_tree_name(zName, &pathname);
101104
zPath = blob_str(&pathname);
102105
if( !db_exists(
103106
"SELECT 1 FROM vfile WHERE pathname=%Q AND NOT deleted", zPath) ){
104
- fossil_panic("not in the repository: %s\n", zName);
107
+ fossil_fatal("not in the repository: %s", zName);
105108
}else{
106109
db_multi_exec("UPDATE vfile SET deleted=1 WHERE pathname=%Q", zPath);
107110
}
108111
blob_reset(&pathname);
109112
free(zName);
110113
}
111114
db_multi_exec("DELETE FROM vfile WHERE deleted AND rid=0");
112115
db_end_transaction(0);
113116
}
114117
--- src/add.c
+++ src/add.c
@@ -53,17 +53,20 @@
53
54 zName = mprintf("%s", g.argv[i]);
55 isDir = file_isdir(zName);
56 if( isDir==1 ) continue;
57 if( isDir==0 ){
58 fossil_panic("not found: %s\n", zName);
59 }
60 if( isDir==2 && access(zName, R_OK) ){
61 fossil_panic("cannot open %s\n", zName);
62 }
63 file_tree_name(zName, &pathname);
64 zPath = blob_str(&pathname);
 
 
 
65 if( db_exists("SELECT 1 FROM vfile WHERE pathname=%Q", zPath) ){
66 db_multi_exec("UPDATE vfile SET deleted=0 WHERE pathname=%Q", zPath);
67 }else{
68 db_multi_exec(
69 "INSERT INTO vfile(vid,deleted,rid,mrid,pathname)"
@@ -99,15 +102,15 @@
99 zName = mprintf("%s", g.argv[i]);
100 file_tree_name(zName, &pathname);
101 zPath = blob_str(&pathname);
102 if( !db_exists(
103 "SELECT 1 FROM vfile WHERE pathname=%Q AND NOT deleted", zPath) ){
104 fossil_panic("not in the repository: %s\n", zName);
105 }else{
106 db_multi_exec("UPDATE vfile SET deleted=1 WHERE pathname=%Q", zPath);
107 }
108 blob_reset(&pathname);
109 free(zName);
110 }
111 db_multi_exec("DELETE FROM vfile WHERE deleted AND rid=0");
112 db_end_transaction(0);
113 }
114
--- src/add.c
+++ src/add.c
@@ -53,17 +53,20 @@
53
54 zName = mprintf("%s", g.argv[i]);
55 isDir = file_isdir(zName);
56 if( isDir==1 ) continue;
57 if( isDir==0 ){
58 fossil_fatal("not found: %s", zName);
59 }
60 if( isDir==2 && access(zName, R_OK) ){
61 fossil_fatal("cannot open %s", zName);
62 }
63 file_tree_name(zName, &pathname);
64 zPath = blob_str(&pathname);
65 if( strcmp(zPath, "manifest")==0 || strcmp(zPath, "_FOSSIL_")==0 ){
66 fossil_fatal("cannot add %s", zPath);
67 }
68 if( db_exists("SELECT 1 FROM vfile WHERE pathname=%Q", zPath) ){
69 db_multi_exec("UPDATE vfile SET deleted=0 WHERE pathname=%Q", zPath);
70 }else{
71 db_multi_exec(
72 "INSERT INTO vfile(vid,deleted,rid,mrid,pathname)"
@@ -99,15 +102,15 @@
102 zName = mprintf("%s", g.argv[i]);
103 file_tree_name(zName, &pathname);
104 zPath = blob_str(&pathname);
105 if( !db_exists(
106 "SELECT 1 FROM vfile WHERE pathname=%Q AND NOT deleted", zPath) ){
107 fossil_fatal("not in the repository: %s", zName);
108 }else{
109 db_multi_exec("UPDATE vfile SET deleted=1 WHERE pathname=%Q", zPath);
110 }
111 blob_reset(&pathname);
112 free(zName);
113 }
114 db_multi_exec("DELETE FROM vfile WHERE deleted AND rid=0");
115 db_end_transaction(0);
116 }
117

Keyboard Shortcuts

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