Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix some cases in wikiformat.c where it was assuming that a hash name would be UUID_SIZE or fewer characters, when in fact the size could be as many as HNAME_MAX characters. This is a change that we missed in the SHA3 cut-over. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
e0757d270c3c10d46a8aabe1865ec384 |
User & Date: | drh 2017-06-11 04:37:13 |
Context
2017-06-11
| ||
16:25 | Experimental and undocument --yy option to the various diff operations does a slow O(N*N) algorithm which can sometimes compute a better side-by-side diff. But it can also take a lot longer and so is not recommended unless really needed. ... (check-in: 1b3fa261 user: drh tags: trunk) | |
04:37 | Fix some cases in wikiformat.c where it was assuming that a hash name would be UUID_SIZE or fewer characters, when in fact the size could be as many as HNAME_MAX characters. This is a change that we missed in the SHA3 cut-over. ... (check-in: e0757d27 user: drh tags: trunk) | |
2017-06-09
| ||
13:09 | Update the /tarball and /zip pages to return status code 404 if given an unknown checkin to download. ... (check-in: a10fc448 user: drh tags: trunk) | |
Changes
Changes to src/wikiformat.c.
︙ | ︙ | |||
1063 1064 1065 1066 1067 1068 1069 | } } /* ** If the input string corresponds to an existing baseline, ** return true. */ | | | | | 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 | } } /* ** If the input string corresponds to an existing baseline, ** return true. */ static int is_valid_hname(const char *z){ int n = strlen(z); if( n<4 || n>HNAME_MAX ) return 0; if( !validate16(z, n) ) return 0; return 1; } /* ** Return TRUE if a hash name corresponds to an artifact in this ** repository. */ static int in_this_repo(const char *zUuid){ static Stmt q; int rc; int n; char zU2[HNAME_MAX+1]; db_static_prepare(&q, "SELECT 1 FROM blob WHERE uuid>=:u AND uuid<:u2" ); db_bind_text(&q, ":u", zUuid); n = (int)strlen(zUuid); if( n>=sizeof(zU2) ) n = sizeof(zU2)-1; memcpy(zU2, zUuid, n); |
︙ | ︙ | |||
1214 1215 1216 1217 1218 1219 1220 | blob_appendf(p->pOut, "<a href=\"%R%h\">", zTarget); }else if( zTarget[0]=='.' && (zTarget[1]=='/' || (zTarget[1]=='.' && zTarget[2]=='/')) && (p->state & WIKI_LINKSONLY)==0 ){ blob_appendf(p->pOut, "<a href=\"%h\">", zTarget); }else if( zTarget[0]=='#' ){ blob_appendf(p->pOut, "<a href=\"%h\">", zTarget); | | | | 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 | blob_appendf(p->pOut, "<a href=\"%R%h\">", zTarget); }else if( zTarget[0]=='.' && (zTarget[1]=='/' || (zTarget[1]=='.' && zTarget[2]=='/')) && (p->state & WIKI_LINKSONLY)==0 ){ blob_appendf(p->pOut, "<a href=\"%h\">", zTarget); }else if( zTarget[0]=='#' ){ blob_appendf(p->pOut, "<a href=\"%h\">", zTarget); }else if( is_valid_hname(zTarget) ){ int isClosed = 0; if( strlen(zTarget)<=UUID_SIZE && is_ticket(zTarget, &isClosed) ){ /* Special display processing for tickets. Display the hyperlink ** as crossed out if the ticket is closed. */ if( isClosed ){ if( g.perm.Hyperlink ){ blob_appendf(p->pOut, "%z<span class=\"wikiTagCancelled\">[", |
︙ | ︙ | |||
1837 1838 1839 1840 1841 1842 1843 | char zLink[42]; zTarget = &z[1]; for(i=0; zTarget[i] && zTarget[i]!='|' && zTarget[i]!=']'; i++){} while(i>1 && zTarget[i-1]==' '){ i--; } c = zTarget[i]; zTarget[i] = 0; | | | 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 | char zLink[42]; zTarget = &z[1]; for(i=0; zTarget[i] && zTarget[i]!='|' && zTarget[i]!=']'; i++){} while(i>1 && zTarget[i-1]==' '){ i--; } c = zTarget[i]; zTarget[i] = 0; if( is_valid_hname(zTarget) ){ memcpy(zLink, zTarget, i+1); canonical16(zLink, i); db_multi_exec( "REPLACE INTO backlink(target,srctype,srcid,mtime)" "VALUES(%Q,%d,%d,%g)", zLink, srctype, srcid, mtime ); } |
︙ | ︙ |