Changeset 2006


Ignore:
Timestamp:
2005-09-29T18:45:01+02:00 (11 years ago)
Author:
nbd
Message:

add more input validation

Location:
branches/whiterussian/openwrt/package/webif/files
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/whiterussian/openwrt/package/webif/files/usr/lib/webif/validate.awk

    r2005 r2006  
    5959} 
    6060 
     61$1 == "string" { 
     62        valid_type = 1 
     63} 
     64 
     65$1 == "mac" { 
     66        valid_type = 1 
     67        if ((value != "") && (value !~ /^[0-9a-fA-F][0-9a-fA-F]*:[0-9a-fA-F][0-9a-fA-F]*:[0-9a-fA-F][0-9a-fA-F]*:[0-9a-fA-F][0-9a-fA-F]*:[0-9a-fA-F][0-9a-fA-F]*:[0-9a-fA-F][0-9a-fA-F]*$/)) { 
     68                valid = 0 
     69                verr = "Invalid value" 
     70        } 
     71} 
     72 
    6173valid_type != 1 { valid = 0 } 
    6274 
     
    6678                if (options[i] == "required") { 
    6779                        if (value == "") { valid = 0; verr = "No value entered" } 
    68                 } else if (options[i] ~ /^min=/) { 
     80                } else if ((options[i] ~ /^min=/) && (value != "")) { 
    6981                        if ($1 == "int") { 
    7082                                min = options[i] 
    7183                                sub(/^min=/, "", min) 
    7284                                if (value < min) { valid = 0; verr = "Value too small" } 
     85                        } else if ($1 == "string") { 
     86                                min = options[i] 
     87                                sub(/^min=/, "", min) 
     88                                if (length(value) < min) { valid = 0; verr = "Value too small" } 
    7389                        } 
    74                 } else if (options[i] ~ /^max=/) { 
     90                } else if ((options[i] ~ /^max=/) && (value != "")) { 
    7591                        if ($1 == "int") { 
    7692                                max = options[i] 
    7793                                sub(/^max=/, "", max) 
    7894                                if (value > max) { valid = 0; verr = "Value too large" } 
     95                        } else if ($1 == "string") { 
     96                                max = options[i] 
     97                                sub(/^max=/, "", max) 
     98                                if (length(value) > max) { valid = 0; verr = "Value too large" } 
    7999                        } 
    80100                } else if ((options[i] == "nodots") && ($1 == "hostname")) { 
  • branches/whiterussian/openwrt/package/webif/files/www/cgi-bin/webif/wireless-config.sh

    r2005 r2006  
    33. /usr/lib/webif/webif.sh 
    44load_settings "wireless" 
     5 
    56 
    67WDS=${wl0_wds:-$(nvram get wl0_wds)} 
     
    2324        FORM_submit="" 
    2425} 
    25 [ -z "$FORM_wdssubmit" ] || { 
    26         # FIXME: add input validation 
    27         WDS="$WDS $FORM_newmac" 
    28         WDS="${WDS# }" 
    29         save_setting wireless wl0_wds "$WDS" 
     26[ \! -z "$FORM_wdssubmit" ] && { 
     27        validate "mac|FORM_newmac|WDS MAC address||$FORM_newmac" && { 
     28                WDS="$WDS $FORM_newmac" 
     29                WDS="${WDS# }" 
     30                save_setting wireless wl0_wds "$WDS" 
     31        } 
    3032        FORM_submit="" 
    3133} 
    3234if [ -z "$FORM_submit" ]; then 
     35        FORM_newmac=${FORM_newmac:-00:00:00:00:00:00} 
    3336        FORM_mode=${wl0_mode:-$(nvram get wl0_mode)} 
    3437        FORM_ssid=${wl0_ssid:-$(nvram get wl0_ssid)} 
     
    97100else 
    98101        SAVED=1 
    99         [ "$FORM_encryption" = "wpa" ] && VALIDATE_RADIUS="required" 
     102        [ "$FORM_encryption" = "wpa" ] && V_RADIUS="required" 
     103        [ "$FORM_encryption" = "psk" ] && V_PSK="required" 
    100104        validate " 
    101 ip|FORM_radius_ipaddr|RADIUS IP address|$VALIDATE_RADIUS|$FORM_radius_ipaddr 
     105ip|FORM_radius_ipaddr|RADIUS IP address|$V_RADIUS|$FORM_radius_ipaddr 
    102106wep|FORM_key1|WEP key 1||$FORM_key1 
    103107wep|FORM_key2|WEP key 2||$FORM_key2 
    104108wep|FORM_key3|WEP key 3||$FORM_key3 
    105 wep|FORM_key4|WEP key 4||$FORM_key4" && { 
     109wep|FORM_key4|WEP key 4||$FORM_key4 
     110string|FORM_wpa_psk|WPA pre-shared key|min=8 max=63 $V_PSK|$FORM_wpa_psk 
     111string|FORM_radius_key|RADIUS server key|min=4 max=63 $V_RADIUS|$FORM_radius_key" && { 
    106112                save_setting wireless wl0_mode "$FORM_mode" 
    107113                save_setting wireless wl0_ssid "$FORM_ssid" 
     
    239245?> 
    240246                <tr> 
    241                         <td width="45%"><input type="text" name="newmac" value="00:00:00:00:00:00" /></td> 
     247                        <td width="45%"><input type="text" name="newmac" value="<? echo -n $FORM_newmac ?>" /></td> 
    242248                        <td width="55%"><input type="submit" name="wdssubmit" value="Add WDS peer" /></td> 
    243249                </tr> 
Note: See TracChangeset for help on using the changeset viewer.