|
Lines 135-140
Link Here
|
| 135 |
/* Number of permitted host/port pair in the array permitted by the admin. */ |
135 |
/* Number of permitted host/port pair in the array permitted by the admin. */ |
| 136 |
static int num_adm_permitted_opens = 0; |
136 |
static int num_adm_permitted_opens = 0; |
| 137 |
|
137 |
|
|
|
138 |
/* List of all permitted ports allowed to be gateway ports by the user */ |
| 139 |
static int *permitted_gatewayports = NULL; |
| 140 |
|
| 141 |
/* Number of permitted ports allowed to be gateway ports by the user */ |
| 142 |
static int num_permitted_gatewayports = 0; |
| 143 |
|
| 138 |
/* special-case port number meaning allow any port */ |
144 |
/* special-case port number meaning allow any port */ |
| 139 |
#define FWD_PERMIT_ANY_PORT 0 |
145 |
#define FWD_PERMIT_ANY_PORT 0 |
| 140 |
|
146 |
|
|
Lines 3303-3308
Link Here
|
| 3303 |
return 1; |
3309 |
return 1; |
| 3304 |
} |
3310 |
} |
| 3305 |
|
3311 |
|
|
|
3312 |
int |
| 3313 |
gatewayport_permit(int requestedport) |
| 3314 |
{ |
| 3315 |
int i, permit = 0; |
| 3316 |
for (i = 0; i < num_permitted_gatewayports; i++) { |
| 3317 |
if (permitted_gatewayports[i] == requestedport) { |
| 3318 |
permit = 1; |
| 3319 |
break; |
| 3320 |
} |
| 3321 |
} |
| 3322 |
if (!permit) { |
| 3323 |
logit("Received request for gateway port %d, " |
| 3324 |
"but the request was denied.", requestedport); |
| 3325 |
return 0; |
| 3326 |
} |
| 3327 |
return 1; |
| 3328 |
} |
| 3329 |
|
| 3306 |
/* |
3330 |
/* |
| 3307 |
* Note that in the listen host/port case |
3331 |
* Note that in the listen host/port case |
| 3308 |
* we don't support FWD_PERMIT_ANY_PORT and |
3332 |
* we don't support FWD_PERMIT_ANY_PORT and |
|
Lines 3482-3489
Link Here
|
| 3482 |
void |
3506 |
void |
| 3483 |
channel_permit_all_opens(void) |
3507 |
channel_permit_all_opens(void) |
| 3484 |
{ |
3508 |
{ |
| 3485 |
if (num_permitted_opens == 0) |
3509 |
/* always require explicit permitopens */ |
| 3486 |
all_opens_permitted = 1; |
3510 |
all_opens_permitted = 0; |
| 3487 |
} |
3511 |
} |
| 3488 |
|
3512 |
|
| 3489 |
void |
3513 |
void |
|
Lines 3503-3508
Link Here
|
| 3503 |
all_opens_permitted = 0; |
3527 |
all_opens_permitted = 0; |
| 3504 |
} |
3528 |
} |
| 3505 |
|
3529 |
|
|
|
3530 |
void |
| 3531 |
channel_add_permitted_gatewayports(int port) |
| 3532 |
{ |
| 3533 |
debug("allow gatewayport %d", port); |
| 3534 |
permitted_gatewayports = xreallocarray(permitted_gatewayports, |
| 3535 |
num_permitted_gatewayports + 1, sizeof(*permitted_gatewayports)); |
| 3536 |
permitted_gatewayports[num_permitted_gatewayports] = port; |
| 3537 |
num_permitted_gatewayports++; |
| 3538 |
} |
| 3539 |
|
| 3506 |
/* |
3540 |
/* |
| 3507 |
* Update the listen port for a dynamic remote forward, after |
3541 |
* Update the listen port for a dynamic remote forward, after |
| 3508 |
* the actual 'newport' has been allocated. If 'newport' < 0 is |
3542 |
* the actual 'newport' has been allocated. If 'newport' < 0 is |
|
Lines 3577-3582
Link Here
|
| 3577 |
} |
3611 |
} |
| 3578 |
|
3612 |
|
| 3579 |
void |
3613 |
void |
|
|
3614 |
channel_clear_permitted_gatewayports(void) |
| 3615 |
{ |
| 3616 |
free(permitted_gatewayports); |
| 3617 |
permitted_gatewayports = NULL; |
| 3618 |
num_permitted_gatewayports = 0; |
| 3619 |
} |
| 3620 |
|
| 3621 |
void |
| 3580 |
channel_clear_adm_permitted_opens(void) |
3622 |
channel_clear_adm_permitted_opens(void) |
| 3581 |
{ |
3623 |
{ |
| 3582 |
int i; |
3624 |
int i; |