Changeset 6020:11e65673ee8c in roaraudio for roard/req.c
- Timestamp:
- 07/13/14 17:57:29 (10 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/req.c
r5961 r6020 457 457 char host[80] = {0}; 458 458 int port = 0; 459 int type ;459 int type = ROAR_SOCKET_TYPE_NONE; 460 460 int fh; 461 461 int len; 462 462 463 if ( mes->datalen < 4 ) 464 return -1; 465 466 if ( *(mes->data) != 0 ) 467 return -1; 468 469 if ( mes->datalen > 80 ) // we do not support long messages here 470 return -1; 471 472 type = (unsigned)mes->data[1]; 473 port = ROAR_NET2HOST16(((uint16_t*)mes->data)[1]); 474 475 len = mes->datalen - 4; 476 477 strncpy(host, &(mes->data[4]), len); 478 host[len] = 0; 479 480 if ( type > ROAR_SOCKET_TYPE_MAX ) 481 return -1; 482 483 if ( type == ROAR_SOCKET_TYPE_FILE ) // disabled because of security resons 484 return -1; 485 486 if ( type == ROAR_SOCKET_TYPE_FORK ) // why should we connect to ourself? 487 return -1; 463 if ( mes->datalen < 4 ) { 464 roar_err_set(ROAR_ERROR_BADMSG); 465 return -1; 466 } 467 468 if ( mes->datalen > 80 ) { // we do not support long messages here 469 roar_err_set(ROAR_ERROR_MSGSIZE); 470 return -1; 471 } 472 473 switch (*(mes->data)) { 474 case 0: // version 0 packet: 475 type = (unsigned)mes->data[1]; 476 port = ROAR_NET2HOST16(((uint16_t*)mes->data)[1]); 477 478 len = mes->datalen - 4; 479 480 strncpy(host, &(mes->data[4]), len); 481 host[len] = 0; 482 break; 483 default: 484 roar_err_set(ROAR_ERROR_NSVERSION); 485 return -1; 486 break; 487 } 488 489 if ( type > ROAR_SOCKET_TYPE_MAX ) { 490 roar_err_set(ROAR_ERROR_NOENT); 491 return -1; 492 } 493 494 switch (type) { 495 case ROAR_SOCKET_TYPE_NONE: 496 case ROAR_SOCKET_TYPE_FORK: 497 case ROAR_SOCKET_TYPE_GENSTR: 498 roar_err_set(ROAR_ERROR_INVAL); 499 return -1; 500 break; 501 case ROAR_SOCKET_TYPE_FILE: 502 roar_err_set(ROAR_ERROR_PERM); 503 return -1; 504 break; 505 default: 506 // pass. 507 break; 508 } 488 509 489 510 ROAR_DBG("req_on_con_stream(*): CONNECT(type=%i, host='%s', port=%i)", type, host, port);
Note: See TracChangeset
for help on using the changeset viewer.