aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtrace
diff options
context:
space:
mode:
authorLibravatar netblue30 <netblue30@yahoo.com>2015-12-02 07:48:41 -0500
committerLibravatar netblue30 <netblue30@yahoo.com>2015-12-02 07:48:41 -0500
commit92ca1dd525de60d735f7ec6c9aacd4443a0a8f15 (patch)
treea798005ecbfec76f1876a785a6305d947362a5cb /src/libtrace
parentopera profile rework (diff)
downloadfirejail-92ca1dd525de60d735f7ec6c9aacd4443a0a8f15.tar.gz
firejail-92ca1dd525de60d735f7ec6c9aacd4443a0a8f15.tar.zst
firejail-92ca1dd525de60d735f7ec6c9aacd4443a0a8f15.zip
libtrace enhancements
Diffstat (limited to 'src/libtrace')
-rw-r--r--src/libtrace/libtrace.c70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/libtrace/libtrace.c b/src/libtrace/libtrace.c
index 44f0cc4d0..9dad3859e 100644
--- a/src/libtrace/libtrace.c
+++ b/src/libtrace/libtrace.c
@@ -228,26 +228,26 @@ static char *translate(XTable *table, int val) {
228 return NULL; 228 return NULL;
229} 229}
230 230
231static void print_sockaddr(const char *call, const struct sockaddr *addr) { 231static void print_sockaddr(const char *call, const struct sockaddr *addr, int rv) {
232 if (addr->sa_family == AF_INET) { 232 if (addr->sa_family == AF_INET) {
233 struct sockaddr_in *a = (struct sockaddr_in *) addr; 233 struct sockaddr_in *a = (struct sockaddr_in *) addr;
234 printf("%u:%s:%s %s:%u\n", pid(), name(), call, inet_ntoa(a->sin_addr), ntohs(a->sin_port)); 234 printf("%u:%s:%s %s port %u:%d\n", pid(), name(), call, inet_ntoa(a->sin_addr), ntohs(a->sin_port), rv);
235 } 235 }
236 else if (addr->sa_family == AF_INET6) { 236 else if (addr->sa_family == AF_INET6) {
237 struct sockaddr_in6 *a = (struct sockaddr_in6 *) addr; 237 struct sockaddr_in6 *a = (struct sockaddr_in6 *) addr;
238 char str[INET6_ADDRSTRLEN]; 238 char str[INET6_ADDRSTRLEN];
239 inet_ntop(AF_INET6, &(a->sin6_addr), str, INET6_ADDRSTRLEN); 239 inet_ntop(AF_INET6, &(a->sin6_addr), str, INET6_ADDRSTRLEN);
240 printf("%u:%s:%s %s\n", pid(), name(), call, str); 240 printf("%u:%s:%s %s:%d\n", pid(), name(), call, str, rv);
241 } 241 }
242 else if (addr->sa_family == AF_UNIX) { 242 else if (addr->sa_family == AF_UNIX) {
243 struct sockaddr_un *a = (struct sockaddr_un *) addr; 243 struct sockaddr_un *a = (struct sockaddr_un *) addr;
244 if (a->sun_path[0]) 244 if (a->sun_path[0])
245 printf("%u:%s:%s %s\n", pid(), name(), call, a->sun_path); 245 printf("%u:%s:%s %s:%d\n", pid(), name(), call, a->sun_path, rv);
246 else 246 else
247 printf("%u:%s:%s @%s\n", pid(), name(), call, a->sun_path + 1); 247 printf("%u:%s:%s @%s:%d\n", pid(), name(), call, a->sun_path + 1, rv);
248 } 248 }
249 else { 249 else {
250 printf("%u:%s:%s family %d\n", pid(), name(), call, addr->sa_family); 250 printf("%u:%s:%s family %d:%d\n", pid(), name(), call, addr->sa_family, rv);
251 } 251 }
252} 252}
253 253
@@ -263,7 +263,7 @@ int open(const char *pathname, int flags, mode_t mode) {
263 orig_open = (orig_open_t)dlsym(RTLD_NEXT, "open"); 263 orig_open = (orig_open_t)dlsym(RTLD_NEXT, "open");
264 264
265 int rv = orig_open(pathname, flags, mode); 265 int rv = orig_open(pathname, flags, mode);
266 printf("%u:%s:open %s\n", pid(), name(), pathname); 266 printf("%u:%s:open %s:%d\n", pid(), name(), pathname, rv);
267 return rv; 267 return rv;
268} 268}
269 269
@@ -274,7 +274,7 @@ int open64(const char *pathname, int flags, mode_t mode) {
274 orig_open64 = (orig_open64_t)dlsym(RTLD_NEXT, "open64"); 274 orig_open64 = (orig_open64_t)dlsym(RTLD_NEXT, "open64");
275 275
276 int rv = orig_open64(pathname, flags, mode); 276 int rv = orig_open64(pathname, flags, mode);
277 printf("%u:%s:open64 %s\n", pid(), name(), pathname); 277 printf("%u:%s:open64 %s:%d\n", pid(), name(), pathname, rv);
278 return rv; 278 return rv;
279} 279}
280 280
@@ -286,7 +286,7 @@ int openat(int dirfd, const char *pathname, int flags, mode_t mode) {
286 orig_openat = (orig_openat_t)dlsym(RTLD_NEXT, "openat"); 286 orig_openat = (orig_openat_t)dlsym(RTLD_NEXT, "openat");
287 287
288 int rv = orig_openat(dirfd, pathname, flags, mode); 288 int rv = orig_openat(dirfd, pathname, flags, mode);
289 printf("%u:%s:openat %s\n", pid(), name(), pathname); 289 printf("%u:%s:openat %s:%d\n", pid(), name(), pathname, rv);
290 return rv; 290 return rv;
291} 291}
292 292
@@ -297,7 +297,7 @@ int openat64(int dirfd, const char *pathname, int flags, mode_t mode) {
297 orig_openat64 = (orig_openat64_t)dlsym(RTLD_NEXT, "openat64"); 297 orig_openat64 = (orig_openat64_t)dlsym(RTLD_NEXT, "openat64");
298 298
299 int rv = orig_openat64(dirfd, pathname, flags, mode); 299 int rv = orig_openat64(dirfd, pathname, flags, mode);
300 printf("%u:%s:openat64 %s\n", pid(), name(), pathname); 300 printf("%u:%s:openat64 %s:%d\n", pid(), name(), pathname, rv);
301 return rv; 301 return rv;
302} 302}
303 303
@@ -308,7 +308,7 @@ FILE *fopen(const char *pathname, const char *mode) {
308 orig_fopen = (orig_fopen_t)dlsym(RTLD_NEXT, "fopen"); 308 orig_fopen = (orig_fopen_t)dlsym(RTLD_NEXT, "fopen");
309 309
310 FILE *rv = orig_fopen(pathname, mode); 310 FILE *rv = orig_fopen(pathname, mode);
311 printf("%u:%s:fopen %s\n", pid(), name(), pathname); 311 printf("%u:%s:fopen %s:%p\n", pid(), name(), pathname, rv);
312 return rv; 312 return rv;
313} 313}
314 314
@@ -318,7 +318,7 @@ FILE *fopen64(const char *pathname, const char *mode) {
318 orig_fopen64 = (orig_fopen_t)dlsym(RTLD_NEXT, "fopen64"); 318 orig_fopen64 = (orig_fopen_t)dlsym(RTLD_NEXT, "fopen64");
319 319
320 FILE *rv = orig_fopen64(pathname, mode); 320 FILE *rv = orig_fopen64(pathname, mode);
321 printf("%u:%s:fopen64 %s\n", pid(), name(), pathname); 321 printf("%u:%s:fopen64 %s:%p\n", pid(), name(), pathname, rv);
322 return rv; 322 return rv;
323} 323}
324#endif /* __GLIBC__ */ 324#endif /* __GLIBC__ */
@@ -332,7 +332,7 @@ FILE *freopen(const char *pathname, const char *mode, FILE *stream) {
332 orig_freopen = (orig_freopen_t)dlsym(RTLD_NEXT, "freopen"); 332 orig_freopen = (orig_freopen_t)dlsym(RTLD_NEXT, "freopen");
333 333
334 FILE *rv = orig_freopen(pathname, mode, stream); 334 FILE *rv = orig_freopen(pathname, mode, stream);
335 printf("%u:%s:freopen %s\n", pid(), name(), pathname); 335 printf("%u:%s:freopen %s:%p\n", pid(), name(), pathname, rv);
336 return rv; 336 return rv;
337} 337}
338 338
@@ -344,7 +344,7 @@ FILE *freopen64(const char *pathname, const char *mode, FILE *stream) {
344 orig_freopen64 = (orig_freopen64_t)dlsym(RTLD_NEXT, "freopen64"); 344 orig_freopen64 = (orig_freopen64_t)dlsym(RTLD_NEXT, "freopen64");
345 345
346 FILE *rv = orig_freopen64(pathname, mode, stream); 346 FILE *rv = orig_freopen64(pathname, mode, stream);
347 printf("%u:%s:freopen64 %s\n", pid(), name(), pathname); 347 printf("%u:%s:freopen64 %s:%p\n", pid(), name(), pathname, rv);
348 return rv; 348 return rv;
349} 349}
350#endif /* __GLIBC__ */ 350#endif /* __GLIBC__ */
@@ -357,7 +357,7 @@ int unlink(const char *pathname) {
357 orig_unlink = (orig_unlink_t)dlsym(RTLD_NEXT, "unlink"); 357 orig_unlink = (orig_unlink_t)dlsym(RTLD_NEXT, "unlink");
358 358
359 int rv = orig_unlink(pathname); 359 int rv = orig_unlink(pathname);
360 printf("%u:%s:unlink %s\n", pid(), name(), pathname); 360 printf("%u:%s:unlink %s:%d\n", pid(), name(), pathname, rv);
361 return rv; 361 return rv;
362} 362}
363 363
@@ -368,7 +368,7 @@ int unlinkat(int dirfd, const char *pathname, int flags) {
368 orig_unlinkat = (orig_unlinkat_t)dlsym(RTLD_NEXT, "unlinkat"); 368 orig_unlinkat = (orig_unlinkat_t)dlsym(RTLD_NEXT, "unlinkat");
369 369
370 int rv = orig_unlinkat(dirfd, pathname, flags); 370 int rv = orig_unlinkat(dirfd, pathname, flags);
371 printf("%u:%s:unlinkat %s\n", pid(), name(), pathname); 371 printf("%u:%s:unlinkat %s:%d\n", pid(), name(), pathname, rv);
372 return rv; 372 return rv;
373} 373}
374 374
@@ -380,7 +380,7 @@ int mkdir(const char *pathname, mode_t mode) {
380 orig_mkdir = (orig_mkdir_t)dlsym(RTLD_NEXT, "mkdir"); 380 orig_mkdir = (orig_mkdir_t)dlsym(RTLD_NEXT, "mkdir");
381 381
382 int rv = orig_mkdir(pathname, mode); 382 int rv = orig_mkdir(pathname, mode);
383 printf("%u:%s:mkdir %s\n", pid(), name(), pathname); 383 printf("%u:%s:mkdir %s:%d\n", pid(), name(), pathname, rv);
384 return rv; 384 return rv;
385} 385}
386 386
@@ -391,7 +391,7 @@ int mkdirat(int dirfd, const char *pathname, mode_t mode) {
391 orig_mkdirat = (orig_mkdirat_t)dlsym(RTLD_NEXT, "mkdirat"); 391 orig_mkdirat = (orig_mkdirat_t)dlsym(RTLD_NEXT, "mkdirat");
392 392
393 int rv = orig_mkdirat(dirfd, pathname, mode); 393 int rv = orig_mkdirat(dirfd, pathname, mode);
394 printf("%u:%s:mkdirat %s\n", pid(), name(), pathname); 394 printf("%u:%s:mkdirat %s:%d\n", pid(), name(), pathname, rv);
395 return rv; 395 return rv;
396} 396}
397 397
@@ -402,7 +402,7 @@ int rmdir(const char *pathname) {
402 orig_rmdir = (orig_rmdir_t)dlsym(RTLD_NEXT, "rmdir"); 402 orig_rmdir = (orig_rmdir_t)dlsym(RTLD_NEXT, "rmdir");
403 403
404 int rv = orig_rmdir(pathname); 404 int rv = orig_rmdir(pathname);
405 printf("%u:%s:rmdir %s\n", pid(), name(), pathname); 405 printf("%u:%s:rmdir %s:%d\n", pid(), name(), pathname, rv);
406 return rv; 406 return rv;
407} 407}
408 408
@@ -414,7 +414,7 @@ int stat(const char *pathname, struct stat *buf) {
414 orig_stat = (orig_stat_t)dlsym(RTLD_NEXT, "stat"); 414 orig_stat = (orig_stat_t)dlsym(RTLD_NEXT, "stat");
415 415
416 int rv = orig_stat(pathname, buf); 416 int rv = orig_stat(pathname, buf);
417 printf("%u:%s:stat %s\n", pid(), name(), pathname); 417 printf("%u:%s:stat %s:%d\n", pid(), name(), pathname, rv);
418 return rv; 418 return rv;
419} 419}
420 420
@@ -426,7 +426,7 @@ int stat64(const char *pathname, struct stat64 *buf) {
426 orig_stat64 = (orig_stat64_t)dlsym(RTLD_NEXT, "stat"); 426 orig_stat64 = (orig_stat64_t)dlsym(RTLD_NEXT, "stat");
427 427
428 int rv = orig_stat64(pathname, buf); 428 int rv = orig_stat64(pathname, buf);
429 printf("%u:%s:stat %s\n", pid(), name(), pathname); 429 printf("%u:%s:stat %s:%d\n", pid(), name(), pathname, rv);
430 return rv; 430 return rv;
431} 431}
432#endif /* __GLIBC__ */ 432#endif /* __GLIBC__ */
@@ -440,7 +440,7 @@ int access(const char *pathname, int mode) {
440 orig_access = (orig_access_t)dlsym(RTLD_NEXT, "access"); 440 orig_access = (orig_access_t)dlsym(RTLD_NEXT, "access");
441 441
442 int rv = orig_access(pathname, mode); 442 int rv = orig_access(pathname, mode);
443 printf("%u:%s:access %s\n", pid(), name(), pathname); 443 printf("%u:%s:access %s:%d\n", pid(), name(), pathname, rv);
444 return rv; 444 return rv;
445} 445}
446 446
@@ -453,7 +453,7 @@ int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
453 orig_connect = (orig_connect_t)dlsym(RTLD_NEXT, "connect"); 453 orig_connect = (orig_connect_t)dlsym(RTLD_NEXT, "connect");
454 454
455 int rv = orig_connect(sockfd, addr, addrlen); 455 int rv = orig_connect(sockfd, addr, addrlen);
456 print_sockaddr("connect", addr); 456 print_sockaddr("connect", addr, rv);
457 457
458 return rv; 458 return rv;
459} 459}
@@ -494,7 +494,7 @@ int socket(int domain, int type, int protocol) {
494 else 494 else
495 sprintf(ptr, "%s", str); 495 sprintf(ptr, "%s", str);
496 496
497 printf("%s\n", buf); 497 printf("%s:%d\n", buf, rv);
498 return rv; 498 return rv;
499} 499}
500 500
@@ -506,7 +506,7 @@ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
506 orig_bind = (orig_bind_t)dlsym(RTLD_NEXT, "bind"); 506 orig_bind = (orig_bind_t)dlsym(RTLD_NEXT, "bind");
507 507
508 int rv = orig_bind(sockfd, addr, addrlen); 508 int rv = orig_bind(sockfd, addr, addrlen);
509 print_sockaddr("bind", addr); 509 print_sockaddr("bind", addr, rv);
510 510
511 return rv; 511 return rv;
512} 512}
@@ -519,7 +519,7 @@ int accept(int sockfd, struct sockaddr *addr, socklen_t addrlen) {
519 orig_accept = (orig_accept_t)dlsym(RTLD_NEXT, "accept"); 519 orig_accept = (orig_accept_t)dlsym(RTLD_NEXT, "accept");
520 520
521 int rv = orig_accept(sockfd, addr, addrlen); 521 int rv = orig_accept(sockfd, addr, addrlen);
522 print_sockaddr("accept", addr); 522 print_sockaddr("accept", addr, rv);
523 523
524 return rv; 524 return rv;
525} 525}
@@ -532,7 +532,7 @@ int system(const char *command) {
532 orig_system = (orig_system_t)dlsym(RTLD_NEXT, "system"); 532 orig_system = (orig_system_t)dlsym(RTLD_NEXT, "system");
533 533
534 int rv = orig_system(command); 534 int rv = orig_system(command);
535 printf("%u:%s:system %s\n", pid(), name(), command); 535 printf("%u:%s:system %s:%d\n", pid(), name(), command, rv);
536 536
537 return rv; 537 return rv;
538} 538}
@@ -544,7 +544,7 @@ int setuid(uid_t uid) {
544 orig_setuid = (orig_setuid_t)dlsym(RTLD_NEXT, "setuid"); 544 orig_setuid = (orig_setuid_t)dlsym(RTLD_NEXT, "setuid");
545 545
546 int rv = orig_setuid(uid); 546 int rv = orig_setuid(uid);
547 printf("%u:%s:setuid %d\n", pid(), name(), uid); 547 printf("%u:%s:setuid %d:%d\n", pid(), name(), uid, rv);
548 548
549 return rv; 549 return rv;
550} 550}
@@ -556,7 +556,7 @@ int setgid(gid_t gid) {
556 orig_setgid = (orig_setgid_t)dlsym(RTLD_NEXT, "setgid"); 556 orig_setgid = (orig_setgid_t)dlsym(RTLD_NEXT, "setgid");
557 557
558 int rv = orig_setgid(gid); 558 int rv = orig_setgid(gid);
559 printf("%u:%s:setgid %d\n", pid(), name(), gid); 559 printf("%u:%s:setgid %d:%d\n", pid(), name(), gid, rv);
560 560
561 return rv; 561 return rv;
562} 562}
@@ -568,7 +568,7 @@ int setfsuid(uid_t uid) {
568 orig_setfsuid = (orig_setfsuid_t)dlsym(RTLD_NEXT, "setfsuid"); 568 orig_setfsuid = (orig_setfsuid_t)dlsym(RTLD_NEXT, "setfsuid");
569 569
570 int rv = orig_setfsuid(uid); 570 int rv = orig_setfsuid(uid);
571 printf("%u:%s:setfsuid %d\n", pid(), name(), uid); 571 printf("%u:%s:setfsuid %d:%d\n", pid(), name(), uid, rv);
572 572
573 return rv; 573 return rv;
574} 574}
@@ -580,7 +580,7 @@ int setfsgid(gid_t gid) {
580 orig_setfsgid = (orig_setfsgid_t)dlsym(RTLD_NEXT, "setfsgid"); 580 orig_setfsgid = (orig_setfsgid_t)dlsym(RTLD_NEXT, "setfsgid");
581 581
582 int rv = orig_setfsgid(gid); 582 int rv = orig_setfsgid(gid);
583 printf("%u:%s:setfsgid %d\n", pid(), name(), gid); 583 printf("%u:%s:setfsgid %d:%d\n", pid(), name(), gid, rv);
584 584
585 return rv; 585 return rv;
586} 586}
@@ -592,7 +592,7 @@ int setreuid(uid_t ruid, uid_t euid) {
592 orig_setreuid = (orig_setreuid_t)dlsym(RTLD_NEXT, "setreuid"); 592 orig_setreuid = (orig_setreuid_t)dlsym(RTLD_NEXT, "setreuid");
593 593
594 int rv = orig_setreuid(ruid, euid); 594 int rv = orig_setreuid(ruid, euid);
595 printf("%u:%s:setreuid %d %d\n", pid(), name(), ruid, euid); 595 printf("%u:%s:setreuid %d %d:%d\n", pid(), name(), ruid, euid, rv);
596 596
597 return rv; 597 return rv;
598} 598}
@@ -604,7 +604,7 @@ int setregid(gid_t rgid, gid_t egid) {
604 orig_setregid = (orig_setregid_t)dlsym(RTLD_NEXT, "setregid"); 604 orig_setregid = (orig_setregid_t)dlsym(RTLD_NEXT, "setregid");
605 605
606 int rv = orig_setregid(rgid, egid); 606 int rv = orig_setregid(rgid, egid);
607 printf("%u:%s:setregid %d %d\n", pid(), name(), rgid, egid); 607 printf("%u:%s:setregid %d %d:%d\n", pid(), name(), rgid, egid, rv);
608 608
609 return rv; 609 return rv;
610} 610}
@@ -616,7 +616,7 @@ int setresuid(uid_t ruid, uid_t euid, uid_t suid) {
616 orig_setresuid = (orig_setresuid_t)dlsym(RTLD_NEXT, "setresuid"); 616 orig_setresuid = (orig_setresuid_t)dlsym(RTLD_NEXT, "setresuid");
617 617
618 int rv = orig_setresuid(ruid, euid, suid); 618 int rv = orig_setresuid(ruid, euid, suid);
619 printf("%u:%s:setresuid %d %d %d\n", pid(), name(), ruid, euid, suid); 619 printf("%u:%s:setresuid %d %d %d:%d\n", pid(), name(), ruid, euid, suid, rv);
620 620
621 return rv; 621 return rv;
622} 622}
@@ -628,7 +628,7 @@ int setresgid(gid_t rgid, gid_t egid, gid_t sgid) {
628 orig_setresgid = (orig_setresgid_t)dlsym(RTLD_NEXT, "setresgid"); 628 orig_setresgid = (orig_setresgid_t)dlsym(RTLD_NEXT, "setresgid");
629 629
630 int rv = orig_setresgid(rgid, egid, sgid); 630 int rv = orig_setresgid(rgid, egid, sgid);
631 printf("%u:%s:setresgid %d %d %d\n", pid(), name(), rgid, egid, sgid); 631 printf("%u:%s:setresgid %d %d %d:%d\n", pid(), name(), rgid, egid, sgid, rv);
632 632
633 return rv; 633 return rv;
634} 634}