Changeset 5145:c1a3ca765154 in roaraudio for libroar/ctl.c
- Timestamp:
- 10/11/11 13:47:59 (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/ctl.c
r5144 r5145 311 311 m->data[1] = filter; 312 312 m->data[2] = cmp; 313 *((uint32_t*)&(m->data[3])) = ROAR_HOST2NET32(id); 313 m->data[3] = (id & 0xFF000000LU) >> 24; 314 m->data[4] = (id & 0x00FF0000LU) >> 16; 315 m->data[5] = (id & 0x0000FF00LU) >> 8; 316 m->data[6] = (id & 0x000000FFLU) >> 0; 314 317 315 318 return 0; 316 319 } 317 320 int roar_ctl_m2f (struct roar_message * m, unsigned char * filter, unsigned char * cmp, uint32_t * id) { 321 register uint32_t idreg; 318 322 319 323 if ( m->datalen != 7 ) … … 328 332 *cmp = m->data[2]; 329 333 330 *id = ROAR_NET2HOST32(*((uint32_t*)&(m->data[3]))); 334 idreg = ((uint32_t)(unsigned char)m->data[3]) << 24; 335 idreg |= ((uint32_t)(unsigned char)m->data[4]) << 16; 336 idreg |= ((uint32_t)(unsigned char)m->data[5]) << 8; 337 idreg |= ((uint32_t)(unsigned char)m->data[6]) << 0; 338 *id = idreg; 331 339 332 340 return 0; … … 345 353 break; 346 354 default: 355 roar_err_set(ROAR_ERROR_NOTSUP); 347 356 return -1; 348 357 } … … 352 361 int i; 353 362 354 if ( len > LIBROAR_BUFFER_MSGDATA ) 355 return -1; 363 if ( len > LIBROAR_BUFFER_MSGDATA ) { 364 roar_err_set(ROAR_ERROR_MSGSIZE); 365 return -1; 366 } 356 367 357 368 m->datalen = len; … … 365 376 int i; 366 377 367 if ( m->datalen > len ) 368 return -1; 378 if ( m->datalen > len ) { 379 roar_err_set(ROAR_ERROR_MSGSIZE); 380 return -1; 381 } 369 382 370 383 for (i = 0; i < m->datalen; i++) … … 380 393 int max_len; 381 394 uint32_t pid; 382 size_t len_rest; 395 signed long int len_rest; 396 size_t nnode_len; 383 397 384 398 if ( c == NULL ) … … 429 443 cur += 4; 430 444 431 len_rest = sizeof(m->data) - cur; 432 if ( roar_nnode_to_blob(&(c->nnode), &(m->data[cur]), &len_rest) == 0 ) { 433 cur += len_rest; 445 len_rest = (long int)sizeof(m->data) - (long int)cur; 446 if ( len_rest < 0 ) { 447 roar_panic(ROAR_FATAL_ERROR_MEMORY_CORRUPTION, NULL); 448 } 449 450 nnode_len = len_rest; 451 if ( roar_nnode_to_blob(&(c->nnode), &(m->data[cur]), &nnode_len) == 0 ) { 452 cur += nnode_len; 434 453 } 435 454 … … 445 464 size_t len; 446 465 447 if ( m == NULL || c == NULL ) 448 return -1; 449 450 if ( m->datalen == 0 ) 451 return -1; 466 if ( m == NULL || c == NULL ) { 467 roar_err_set(ROAR_ERROR_FAULT); 468 return -1; 469 } 470 471 if ( m->datalen == 0 ) { 472 roar_err_set(ROAR_ERROR_MSGSIZE); 473 return -1; 474 } 452 475 453 476 ROAR_DBG("roar_ctl_m2c(*): got data!, len = %i", m->datalen); … … 455 478 if ( m->data[0] != 0 ) { 456 479 ROAR_DBG("roar_ctl_m2c(*): wrong version!"); 457 return -1; 458 } 459 460 if ( m->datalen < 3 ) 461 return -1; 480 roar_err_set(ROAR_ERROR_NSVERSION); 481 return -1; 482 } 483 484 if ( m->datalen < 3 ) { 485 roar_err_set(ROAR_ERROR_MSGSIZE); 486 return -1; 487 } 462 488 463 489 ROAR_DBG("roar_ctl_m2c(*): have usable data!"); … … 467 493 for (i = 0; i < ROAR_CLIENTS_MAX_STREAMS_PER_CLIENT; i++) 468 494 c->streams[i] = -1; 495 496 if ( m->data[2] < 0 || m->data[2] > ROAR_CLIENTS_MAX_STREAMS_PER_CLIENT ) { 497 roar_err_set(ROAR_ERROR_TOOMANYARGS); 498 return -1; 499 } 469 500 470 501 for (i = 0; i < m->data[2]; i++) … … 555 586 } 556 587 588 roar_err_set(ROAR_ERROR_NOENT); 557 589 return -1; 558 590 } … … 592 624 } 593 625 626 roar_err_set(ROAR_ERROR_NOENT); 594 627 return -1; 595 628 } … … 632 665 return _libroar_ot[i].ot; 633 666 667 roar_err_set(ROAR_ERROR_NOENT); 634 668 return -1; 635 669 } … … 642 676 return _libroar_ot[i].name; 643 677 678 roar_err_set(ROAR_ERROR_NOENT); 644 679 return NULL; 645 680 } … … 650 685 uint_least32_t s; 651 686 652 if ( dst == NULL || src == NULL || dstchans < 0 || srcchans < 0 ) 653 return -1; 687 if ( dst == NULL || src == NULL ) { 688 roar_err_set(ROAR_ERROR_FAULT); 689 return -1; 690 } 691 692 if ( dstchans < 0 || srcchans < 0 ) { 693 roar_err_set(ROAR_ERROR_INVAL); 694 return -1; 695 } 654 696 655 697 if ( dstchans == srcchans ) { … … 709 751 break; 710 752 default: 753 roar_err_set(ROAR_ERROR_NOTSUP); 711 754 return -1; 712 755 break; … … 741 784 break; 742 785 default: 786 roar_err_set(ROAR_ERROR_NOTSUP); 743 787 return -1; 744 788 break; … … 772 816 break; 773 817 default: 818 roar_err_set(ROAR_ERROR_NOTSUP); 774 819 return -1; 775 820 break; … … 802 847 break; 803 848 default: 849 roar_err_set(ROAR_ERROR_NOTSUP); 804 850 return -1; 805 851 break; … … 831 877 break; 832 878 default: 879 roar_err_set(ROAR_ERROR_NOTSUP); 833 880 return -1; 834 881 break; … … 836 883 break; 837 884 default: 885 roar_err_set(ROAR_ERROR_NOTSUP); 838 886 return -1; 839 887 break;
Note: See TracChangeset
for help on using the changeset viewer.