Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Fix to the /hash-collisions page: Only consider the SHA1 hashes in the BLOB table, not the random hexadecimal identifiers assigned to tickets and tech-notes. The latter two live in a different namespace. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
327eee14525ff1c98f4f36e73c8ed24d |
| User & Date: | drh 2015-02-11 13:18:00.092 |
Context
|
2015-02-11
| ||
| 13:34 | Fix a problem in /hash-collisions that was causing the links to remain directed to the honeypot. check-in: aa12ac91cf user: drh tags: trunk | |
| 13:18 | Fix to the /hash-collisions page: Only consider the SHA1 hashes in the BLOB table, not the random hexadecimal identifiers assigned to tickets and tech-notes. The latter two live in a different namespace. check-in: 327eee1452 user: drh tags: trunk | |
| 12:36 | On the /hash-collisions page, list the longer collisions with links to /whatid. check-in: 3234cf1efe user: drh tags: trunk | |
Changes
Changes to src/name.c.
| ︙ | ︙ | |||
102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
**
** The zType parameter specifies the type of artifact: ci, t, w, e, g.
** If zType is NULL or "" or "*" then any type of artifact will serve.
** If zType is "br" then find the first check-in of the named branch
** rather than the last.
** zType is "ci" in most use cases since we are usually searching for
** a check-in.
*/
int symbolic_name_to_rid(const char *zTag, const char *zType){
int vid;
int rid = 0;
int nTag;
int i;
int startOfBranch = 0;
| > > > > > | 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
**
** The zType parameter specifies the type of artifact: ci, t, w, e, g.
** If zType is NULL or "" or "*" then any type of artifact will serve.
** If zType is "br" then find the first check-in of the named branch
** rather than the last.
** zType is "ci" in most use cases since we are usually searching for
** a check-in.
**
** Note that the input zTag for types "t" and "e" is the SHA1 hash of
** the ticket-change or event-change artifact, not the randomly generated
** hexadecimal identifier assigned to tickets and events. Those identifiers
** live in a separate namespace.
*/
int symbolic_name_to_rid(const char *zTag, const char *zType){
int vid;
int rid = 0;
int nTag;
int i;
int startOfBranch = 0;
|
| ︙ | ︙ | |||
1077 1078 1079 1080 1081 1082 1083 |
char z[UUID_SIZE+1];
} aCollide[UUID_SIZE+1];
login_check_credentials();
if( !g.perm.Read ){ login_needed(); return; }
memset(aCollide, 0, sizeof(aCollide));
for(i=0; i<ArraySize(aCollide); i++) blob_init(&aCollide[i].ex,0,0);
memset(zPrev, 0, sizeof(zPrev));
| | < < < < < < < | 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 |
char z[UUID_SIZE+1];
} aCollide[UUID_SIZE+1];
login_check_credentials();
if( !g.perm.Read ){ login_needed(); return; }
memset(aCollide, 0, sizeof(aCollide));
for(i=0; i<ArraySize(aCollide); i++) blob_init(&aCollide[i].ex,0,0);
memset(zPrev, 0, sizeof(zPrev));
db_prepare(&q,"SELECT uuid FROM blob ORDER BY 1");
while( db_step(&q)==SQLITE_ROW ){
const char *zUuid = db_column_text(&q,0);
int n = db_column_bytes(&q,0);
int i;
nHash++;
for(i=0; zPrev[i] && zPrev[i]==zUuid[i]; i++){}
if( i>0 && i<=UUID_SIZE ){
|
| ︙ | ︙ |