Changeset 8200


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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1.5x/libtransmission/rpc-server.c

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