Fossil

Check-in [af78e282bb]
Login

Check-in [af78e282bb]

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

Overview
Comment:For the "fossil ui remote:/" command, consistently use hardcoded IPv4 loopback addresses, to avoid inconsistent implementations of "localhost". Fix a bug in the error message output for the -P option.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: af78e282bb0a068f8f0d3254d41f0e414f6397f9cfc6c63e32b5df3b34a0e42e
User & Date: drh 2025-04-15 14:54:23.622
Context
2025-04-15
15:56
Two new settings "show-repolist-desc" and "show-repolist-lg" control whether or not the description and the login-group are shown on the repolist, respectively. These settings must be global to be effective. They default to "off". ... (check-in: 1760fa2bf4 user: drh tags: trunk)
14:54
For the "fossil ui remote:/" command, consistently use hardcoded IPv4 loopback addresses, to avoid inconsistent implementations of "localhost". Fix a bug in the error message output for the -P option. ... (check-in: af78e282bb user: drh tags: trunk)
14:37
Fix possible array-bounds overflow in the timeline graph computation. ... (check-in: 202d3ea2b5 user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/cgi.c.
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
          z4to6[0] = 0;
        }

        /* Convert the zIpAddr text string into an actual IPv6 address */
        if( inet_pton(AF_INET6, zIpAddr, &inaddr.sin6_addr)==0
         && (z4to6[0]==0 || inet_pton(AF_INET6, z4to6, &inaddr.sin6_addr)==0)
        ){
          fossil_fatal("not a valid IP address: %s", z4to6);
        }
      }else if( flags & HTTP_SERVER_LOCALHOST ){
        /* Bind to the loop-back IP address */
        inaddr.sin6_addr = in6addr_loopback;
      }else{
        /* Bind to any and all available IP addresses */
        inaddr.sin6_addr = in6addr_any;







|







2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
          z4to6[0] = 0;
        }

        /* Convert the zIpAddr text string into an actual IPv6 address */
        if( inet_pton(AF_INET6, zIpAddr, &inaddr.sin6_addr)==0
         && (z4to6[0]==0 || inet_pton(AF_INET6, z4to6, &inaddr.sin6_addr)==0)
        ){
          fossil_fatal("not a valid IP address: %s", zIpAddr);
        }
      }else if( flags & HTTP_SERVER_LOCALHOST ){
        /* Bind to the loop-back IP address */
        inaddr.sin6_addr = in6addr_loopback;
      }else{
        /* Bind to any and all available IP addresses */
        inaddr.sin6_addr = in6addr_any;
Changes to src/main.c.
3521
3522
3523
3524
3525
3526
3527
3528

3529
3530
3531
3532
3533
3534
3535
        if( ssh_needs_path_argument(zRemote,-1) ^ isRetry ){
          ssh_add_path_argument(&ssh);
        }
        blob_append_escaped_arg(&ssh, "fossil", 1);
      }else{
        blob_appendf(&ssh, " %$", zFossilCmd);
      }
      blob_appendf(&ssh, " ui --nobrowser --localauth --port %d", iPort);

      if( zNotFound ) blob_appendf(&ssh, " --notfound %!$", zNotFound);
      if( zFileGlob ) blob_appendf(&ssh, " --files-urlenc %T", zFileGlob);
      if( g.zCkoutAlias ) blob_appendf(&ssh," --ckout-alias %!$",g.zCkoutAlias);
      if( zExtPage ){
        if( !file_is_absolute_path(zExtPage) ){
          zExtPage = mprintf("%s/%s", g.argv[2], zExtPage);
        }







|
>







3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
        if( ssh_needs_path_argument(zRemote,-1) ^ isRetry ){
          ssh_add_path_argument(&ssh);
        }
        blob_append_escaped_arg(&ssh, "fossil", 1);
      }else{
        blob_appendf(&ssh, " %$", zFossilCmd);
      }
      blob_appendf(&ssh, " ui --nobrowser --localauth --port 127.0.0.1:%d",
                   iPort);
      if( zNotFound ) blob_appendf(&ssh, " --notfound %!$", zNotFound);
      if( zFileGlob ) blob_appendf(&ssh, " --files-urlenc %T", zFileGlob);
      if( g.zCkoutAlias ) blob_appendf(&ssh," --ckout-alias %!$",g.zCkoutAlias);
      if( zExtPage ){
        if( !file_is_absolute_path(zExtPage) ){
          zExtPage = mprintf("%s/%s", g.argv[2], zExtPage);
        }