Changeset 8199


Ignore:
Timestamp:
Apr 10, 2009, 3:09:31 PM (13 years ago)
Author:
charles
Message:

(trunk libT) better filtering of maliciously-crafted URLs when serving web interface files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/rpc-server.c

    r8152 r8199  
    358358        char * pch;
    359359        char * subpath;
    360         char * filename;
    361360
    362361        subpath = tr_strdup( req->uri + 18 );
     
    364363            *pch = '\0';
    365364
    366         filename = tr_strdup_printf( "%s%s%s",
    367                        clutchDir,
    368                        TR_PATH_DELIMITER_STR,
    369                        subpath && *subpath ? subpath : "index.html" );
    370 
    371         serve_file( req, server, filename );
    372 
    373         tr_free( filename );
     365        if( strstr( subpath, ".." ) )
     366        {
     367            send_simple_response( req, HTTP_NOTFOUND, "<p>Tsk, tsk.</p>" );
     368        }
     369        else
     370        {
     371            char * filename = tr_strdup_printf( "%s%s%s",
     372                                 clutchDir,
     373                                 TR_PATH_DELIMITER_STR,
     374                                 subpath && *subpath ? subpath : "index.html" );
     375            serve_file( req, server, filename );
     376            tr_free( filename );
     377        }
     378
    374379        tr_free( subpath );
    375380    }
Note: See TracChangeset for help on using the changeset viewer.