Fossil

Check-in [c426475eeb]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Be carefull comparing a char < ' ': If the platform 'char' type is signed, this will be true for all UTF-8 characters >0x7f as well.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: c426475eeb639761c9aa1f527a0ee3757a6d9e62
User & Date: jan.nijtmans 2013-10-09 08:24:38.214
Context
2013-10-09
09:20
Make sure that the UUID of a generated P-card is the UUID of a valid check-in in this repository. If not, bail out early. ... (check-in: d30abe150a user: jan.nijtmans tags: trunk)
08:24
Be carefull comparing a char < ' ': If the platform 'char' type is signed, this will be true for all UTF-8 characters >0x7f as well. ... (check-in: c426475eeb user: jan.nijtmans tags: trunk)
07:56
Fix the abbreviated project name escape mechanism for two less obvious dangers: - spaces at the end of the filename should be stripped. - control charaters are not allowed in filenames either. ... (check-in: e161527c3a user: jan.nijtmans tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/info.c.
586
587
588
589
590
591
592
593


594
595
596
597
598
599
600
      int jj;
      if( zPJ==0 ) zPJ = db_get("project-name", "unnamed");
      blob_zero(&projName);
      blob_append(&projName, zPJ, -1);
      blob_trim(&projName);
      zPJ = blob_str(&projName);
      for(jj=0; zPJ[jj]; jj++){
        if( zPJ[jj]<' '||strchr("\"*/:<>?\\|", zPJ[jj]) ) zPJ[jj] = '_';


      }
      @ <tr><th>Timelines:</th><td>
      @   %z(href("%R/timeline?f=%S",zUuid))family</a>
      if( zParent ){
        @ | %z(href("%R/timeline?p=%S",zUuid))ancestors</a>
      }
      if( !isLeaf ){







|
>
>







586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
      int jj;
      if( zPJ==0 ) zPJ = db_get("project-name", "unnamed");
      blob_zero(&projName);
      blob_append(&projName, zPJ, -1);
      blob_trim(&projName);
      zPJ = blob_str(&projName);
      for(jj=0; zPJ[jj]; jj++){
        if( (zPJ[jj]>0 && zPJ[jj]<' ') || strchr("\"*/:<>?\\|", zPJ[jj]) ){
          zPJ[jj] = '_';
        }
      }
      @ <tr><th>Timelines:</th><td>
      @   %z(href("%R/timeline?f=%S",zUuid))family</a>
      if( zParent ){
        @ | %z(href("%R/timeline?p=%S",zUuid))ancestors</a>
      }
      if( !isLeaf ){
Changes to src/user.c.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  while( fossil_isspace(*z) ){ z++; }
  for(i=0; z[i]; i++){
    if( z[i]=='\r' || z[i]=='\n' ){
       while( i>0 && fossil_isspace(z[i-1]) ){ i--; }
       z[i] = 0;
       break;
    }
    if( z[i]<' ' ) z[i] = ' ';
  }
  blob_append(pBlob, z, -1);
}

#if defined(_WIN32) || defined(__BIONIC__)
#ifdef __MINGW32__
#include <conio.h>







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  while( fossil_isspace(*z) ){ z++; }
  for(i=0; z[i]; i++){
    if( z[i]=='\r' || z[i]=='\n' ){
       while( i>0 && fossil_isspace(z[i-1]) ){ i--; }
       z[i] = 0;
       break;
    }
    if( z[i]>0 && z[i]<' ' ) z[i] = ' ';
  }
  blob_append(pBlob, z, -1);
}

#if defined(_WIN32) || defined(__BIONIC__)
#ifdef __MINGW32__
#include <conio.h>