Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: native_client_sdk/src/libraries/nacl_io/kernel_wrap_glibc.cc

Issue 286303002: Fix socket calls in glibc by using new errno return macros. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | native_client_sdk/src/tests/nacl_io_test/kernel_wrap_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <sys/types.h> // Include something that will define __GLIBC__. 5 #include <sys/types.h> // Include something that will define __GLIBC__.
6 6
7 // The entire file is wrapped in this #if. We do this so this .cc file can be 7 // The entire file is wrapped in this #if. We do this so this .cc file can be
8 // compiled, even on a non-glibc build. 8 // compiled, even on a non-glibc build.
9 #if defined(__native_client__) && defined(__GLIBC__) 9 #if defined(__native_client__) && defined(__GLIBC__)
10 10
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 318
319 int WRAP(write)(int fd, const void* buf, size_t count, size_t* nwrote) { 319 int WRAP(write)(int fd, const void* buf, size_t count, size_t* nwrote) {
320 ssize_t signed_nwrote = ki_write(fd, buf, count); 320 ssize_t signed_nwrote = ki_write(fd, buf, count);
321 *nwrote = static_cast<size_t>(signed_nwrote); 321 *nwrote = static_cast<size_t>(signed_nwrote);
322 RTN_ERRNO_IF(signed_nwrote < 0); 322 RTN_ERRNO_IF(signed_nwrote < 0);
323 return 0; 323 return 0;
324 } 324 }
325 325
326 int WRAP(accept)(int sockfd, struct sockaddr* addr, 326 int WRAP(accept)(int sockfd, struct sockaddr* addr,
327 socklen_t* addrlen, int *sd) { 327 socklen_t* addrlen, int *sd) {
328 int result = ki_accept(sockfd, addr, addrlen); 328 *sd = ki_accept(sockfd, addr, addrlen);
329 if (result < 0) { 329 RTN_ERRNO_IF(*sd < 0);
330 *sd = -1; 330 return 0;
331 return errno;
332 } else {
333 *sd = result;
334 return 0;
335 }
336 } 331 }
337 332
338 int WRAP(bind)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { 333 int WRAP(bind)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) {
339 return (ki_bind(sockfd, addr, addrlen) < 0) ? errno : 0; 334 RTN_ERRNO_IF(ki_bind(sockfd, addr, addrlen) < 0);
335 return 0;
340 } 336 }
341 337
342 int WRAP(connect)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { 338 int WRAP(connect)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) {
343 return (ki_connect(sockfd, addr, addrlen) < 0) ? errno : 0; 339 RTN_ERRNO_IF(ki_connect(sockfd, addr, addrlen) < 0);
340 return 0;
344 } 341 }
345 342
346 int WRAP(getpeername)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { 343 int WRAP(getpeername)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) {
347 return (ki_getpeername(sockfd, addr, addrlen) < 0) ? errno : 0; 344 RTN_ERRNO_IF(ki_getpeername(sockfd, addr, addrlen) < 0);
345 return 0;
348 } 346 }
349 347
350 int WRAP(getsockname)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { 348 int WRAP(getsockname)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) {
351 return (ki_getsockname(sockfd, addr, addrlen) < 0) ? errno : 0; 349 RTN_ERRNO_IF(ki_getsockname(sockfd, addr, addrlen) < 0);
350 return 0;
352 } 351 }
353 352
354 int WRAP(getsockopt)(int sockfd, int level, int optname, void* optval, 353 int WRAP(getsockopt)(int sockfd, int level, int optname, void* optval,
355 socklen_t* optlen) { 354 socklen_t* optlen) {
356 return (ki_getsockopt( 355 RTN_ERRNO_IF(ki_getsockopt(sockfd, level, optname, optval, optlen) < 0);
357 sockfd, level, optname, optval, optlen) < 0) ? errno : 0; 356 return 0;
358 } 357 }
359 358
360 int WRAP(setsockopt)(int sockfd, int level, int optname, const void* optval, 359 int WRAP(setsockopt)(int sockfd, int level, int optname, const void* optval,
361 socklen_t optlen) { 360 socklen_t optlen) {
362 return (ki_setsockopt( 361 RTN_ERRNO_IF(ki_setsockopt(sockfd, level, optname, optval, optlen) < 0);
363 sockfd, level, optname, optval, optlen) < 0) ? errno : 0; 362 return 0;
364 } 363 }
365 364
366 int WRAP(listen)(int sockfd, int backlog) { 365 int WRAP(listen)(int sockfd, int backlog) {
367 return (ki_listen(sockfd, backlog) < 0) ? errno : 0; 366 RTN_ERRNO_IF(ki_listen(sockfd, backlog) < 0);
367 return 0;
368 } 368 }
369 369
370 int WRAP(recv)(int sockfd, void* buf, size_t len, int flags, int* count) { 370 int WRAP(recv)(int sockfd, void* buf, size_t len, int flags, int* count) {
371 ssize_t signed_nread = ki_recv(sockfd, buf, len, flags); 371 ssize_t signed_nread = ki_recv(sockfd, buf, len, flags);
372 *count = static_cast<int>(signed_nread); 372 *count = static_cast<int>(signed_nread);
373 return (signed_nread < 0) ? errno : 0; 373 RTN_ERRNO_IF(signed_nread < 0);
374 return 0;
374 } 375 }
375 376
376 int WRAP(recvfrom)(int sockfd, void* buf, size_t len, int flags, 377 int WRAP(recvfrom)(int sockfd, void* buf, size_t len, int flags,
377 struct sockaddr* addr, socklen_t* addrlen, int* count) { 378 struct sockaddr* addr, socklen_t* addrlen, int* count) {
378 ssize_t signed_nread = ki_recvfrom(sockfd, buf, len, flags, addr, addrlen); 379 ssize_t signed_nread = ki_recvfrom(sockfd, buf, len, flags, addr, addrlen);
379 *count = static_cast<int>(signed_nread); 380 *count = static_cast<int>(signed_nread);
380 return (signed_nread < 0) ? errno : 0; 381 RTN_ERRNO_IF(signed_nread < 0);
382 return 0;
381 } 383 }
382 384
383 int WRAP(recvmsg)(int sockfd, struct msghdr* msg, int flags, int *count) { 385 int WRAP(recvmsg)(int sockfd, struct msghdr* msg, int flags, int *count) {
384 ssize_t signed_nread = ki_recvmsg(sockfd, msg, flags); 386 ssize_t signed_nread = ki_recvmsg(sockfd, msg, flags);
385 *count = static_cast<int>(signed_nread); 387 *count = static_cast<int>(signed_nread);
386 return (signed_nread < 0) ? errno : 0; 388 RTN_ERRNO_IF(signed_nread < 0);
389 return 0;
387 } 390 }
388 391
389 ssize_t WRAP(send)(int sockfd, const void* buf, size_t len, int flags, 392 ssize_t WRAP(send)(int sockfd, const void* buf, size_t len, int flags,
390 int* count) { 393 int* count) {
391 ssize_t signed_nread = ki_send(sockfd, buf, len, flags); 394 ssize_t signed_nread = ki_send(sockfd, buf, len, flags);
392 *count = static_cast<int>(signed_nread); 395 *count = static_cast<int>(signed_nread);
393 return (signed_nread < 0) ? errno : 0; 396 RTN_ERRNO_IF(signed_nread < 0);
397 return 0;
394 } 398 }
395 399
396 ssize_t WRAP(sendto)(int sockfd, const void* buf, size_t len, int flags, 400 ssize_t WRAP(sendto)(int sockfd, const void* buf, size_t len, int flags,
397 const struct sockaddr* addr, socklen_t addrlen, 401 const struct sockaddr* addr, socklen_t addrlen,
398 int* count) { 402 int* count) {
399 ssize_t signed_nread = ki_sendto(sockfd, buf, len, flags, addr, addrlen); 403 ssize_t signed_nread = ki_sendto(sockfd, buf, len, flags, addr, addrlen);
400 *count = static_cast<int>(signed_nread); 404 *count = static_cast<int>(signed_nread);
401 return (signed_nread < 0) ? errno : 0; 405 RTN_ERRNO_IF(signed_nread < 0);
406 return 0;
402 } 407 }
403 408
404 ssize_t WRAP(sendmsg)(int sockfd, const struct msghdr* msg, int flags, 409 ssize_t WRAP(sendmsg)(int sockfd, const struct msghdr* msg, int flags,
405 int* count) { 410 int* count) {
406 ssize_t signed_nread = ki_sendmsg(sockfd, msg, flags); 411 ssize_t signed_nread = ki_sendmsg(sockfd, msg, flags);
407 *count = static_cast<int>(signed_nread); 412 *count = static_cast<int>(signed_nread);
408 return (signed_nread < 0) ? errno : 0; 413 RTN_ERRNO_IF(signed_nread < 0);
414 return 0;
409 } 415 }
410 416
411 int WRAP(shutdown)(int sockfd, int how) { 417 int WRAP(shutdown)(int sockfd, int how) {
412 return (ki_shutdown(sockfd, how) < 0) ? errno : 0; 418 RTN_ERRNO_IF(ki_shutdown(sockfd, how) < 0);
419 return 0;
413 } 420 }
414 421
415 int WRAP(socket)(int domain, int type, int protocol, int* sd) { 422 int WRAP(socket)(int domain, int type, int protocol, int* sd) {
416 int result = ki_socket(domain, type, protocol); 423 *sd = ki_socket(domain, type, protocol);
417 if (result < 0) { 424 RTN_ERRNO_IF(*sd < 0);
418 *sd = -1; 425 return 0;
419 return errno;
420 } else {
421 *sd = result;
422 return 0;
423 }
424 } 426 }
425 427
426 int WRAP(socketpair)(int domain, int type, int protocol, int* sv) { 428 int WRAP(socketpair)(int domain, int type, int protocol, int* sv) {
427 return (ki_socketpair(domain, type, protocol, sv) < 0) ? errno : 0; 429 RTN_ERRNO_IF(ki_socketpair(domain, type, protocol, sv) < 0);
430 return 0;
428 } 431 }
429 432
430 static void assign_real_pointers() { 433 static void assign_real_pointers() {
431 static bool assigned = false; 434 static bool assigned = false;
432 if (!assigned) { 435 if (!assigned) {
433 EXPAND_SYMBOL_LIST_OPERATION(ASSIGN_REAL_PTR) 436 EXPAND_SYMBOL_LIST_OPERATION(ASSIGN_REAL_PTR)
434 assigned = true; 437 assigned = true;
435 } 438 }
436 } 439 }
437 440
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 if (s_wrapped) { 557 if (s_wrapped) {
555 LOG_TRACE("kernel_wrap_uninit"); 558 LOG_TRACE("kernel_wrap_uninit");
556 EXPAND_SYMBOL_LIST_OPERATION(USE_REAL) 559 EXPAND_SYMBOL_LIST_OPERATION(USE_REAL)
557 s_wrapped = false; 560 s_wrapped = false;
558 } 561 }
559 } 562 }
560 563
561 EXTERN_C_END 564 EXTERN_C_END
562 565
563 #endif // defined(__native_client__) && defined(__GLIBC__) 566 #endif // defined(__native_client__) && defined(__GLIBC__)
OLDNEW
« no previous file with comments | « no previous file | native_client_sdk/src/tests/nacl_io_test/kernel_wrap_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698