Commit 0148935
committed
aaa_diameter: Fix race condition with async dm_send_request()
- Avoid reading the @dmsg after it has been put on the queue, as it
might get freed meanwhile.
* aaa_diameter: Fix race condition on pending async replies
It was possible for the dm_send_request_async_tout() async timeout
function to ran concurrently with a late Diameter server reply, leading
to a use-after-free bug on the @cond struct.
* Add refcounting to the "cond" object
The SHM-stored @cond object is effectively referenced by two separate
processes/threads, which run concurrently:
- dm_send_request_async_tout(), the reactor async timeout callback
- dm_receive_msg(), the libfdcore receiver thread(s)1 parent 6c7d6bf commit 0148935
3 files changed
Lines changed: 96 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
472 | 472 | | |
473 | 473 | | |
474 | 474 | | |
475 | | - | |
| 475 | + | |
476 | 476 | | |
477 | 477 | | |
478 | 478 | | |
479 | 479 | | |
480 | 480 | | |
481 | 481 | | |
482 | | - | |
| 482 | + | |
| 483 | + | |
483 | 484 | | |
484 | 485 | | |
485 | 486 | | |
486 | 487 | | |
487 | 488 | | |
488 | 489 | | |
489 | | - | |
| 490 | + | |
490 | 491 | | |
491 | 492 | | |
492 | 493 | | |
| |||
529 | 530 | | |
530 | 531 | | |
531 | 532 | | |
| 533 | + | |
532 | 534 | | |
533 | 535 | | |
534 | 536 | | |
| 537 | + | |
| 538 | + | |
535 | 539 | | |
536 | 540 | | |
537 | 541 | | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
538 | 546 | | |
539 | 547 | | |
540 | 548 | | |
| |||
546 | 554 | | |
547 | 555 | | |
548 | 556 | | |
| 557 | + | |
549 | 558 | | |
550 | 559 | | |
551 | 560 | | |
| |||
585 | 594 | | |
586 | 595 | | |
587 | 596 | | |
588 | | - | |
| 597 | + | |
589 | 598 | | |
590 | 599 | | |
591 | 600 | | |
592 | 601 | | |
593 | | - | |
| 602 | + | |
594 | 603 | | |
595 | 604 | | |
596 | 605 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| 116 | + | |
116 | 117 | | |
117 | 118 | | |
118 | 119 | | |
| |||
274 | 275 | | |
275 | 276 | | |
276 | 277 | | |
| 278 | + | |
| 279 | + | |
277 | 280 | | |
278 | 281 | | |
279 | 282 | | |
280 | 283 | | |
281 | 284 | | |
282 | 285 | | |
283 | 286 | | |
| 287 | + | |
284 | 288 | | |
285 | 289 | | |
286 | | - | |
| 290 | + | |
287 | 291 | | |
288 | 292 | | |
289 | 293 | | |
| |||
295 | 299 | | |
296 | 300 | | |
297 | 301 | | |
298 | | - | |
299 | 302 | | |
300 | 303 | | |
301 | 304 | | |
| |||
356 | 359 | | |
357 | 360 | | |
358 | 361 | | |
| 362 | + | |
359 | 363 | | |
360 | 364 | | |
361 | 365 | | |
| |||
715 | 719 | | |
716 | 720 | | |
717 | 721 | | |
| 722 | + | |
718 | 723 | | |
719 | 724 | | |
720 | 725 | | |
| |||
830 | 835 | | |
831 | 836 | | |
832 | 837 | | |
| 838 | + | |
833 | 839 | | |
834 | 840 | | |
835 | 841 | | |
836 | 842 | | |
837 | 843 | | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
838 | 889 | | |
839 | 890 | | |
840 | 891 | | |
| |||
1938 | 1989 | | |
1939 | 1990 | | |
1940 | 1991 | | |
1941 | | - | |
| 1992 | + | |
1942 | 1993 | | |
1943 | | - | |
| 1994 | + | |
1944 | 1995 | | |
1945 | 1996 | | |
1946 | 1997 | | |
1947 | 1998 | | |
1948 | | - | |
1949 | | - | |
| 1999 | + | |
| 2000 | + | |
1950 | 2001 | | |
1951 | 2002 | | |
1952 | 2003 | | |
1953 | 2004 | | |
1954 | | - | |
1955 | | - | |
| 2005 | + | |
| 2006 | + | |
| 2007 | + | |
1956 | 2008 | | |
1957 | 2009 | | |
1958 | 2010 | | |
| |||
2191 | 2243 | | |
2192 | 2244 | | |
2193 | 2245 | | |
| 2246 | + | |
2194 | 2247 | | |
2195 | 2248 | | |
2196 | 2249 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
122 | 123 | | |
123 | 124 | | |
124 | 125 | | |
| 126 | + | |
125 | 127 | | |
126 | 128 | | |
127 | 129 | | |
| |||
140 | 142 | | |
141 | 143 | | |
142 | 144 | | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
143 | 162 | | |
144 | 163 | | |
145 | 164 | | |
| |||
169 | 188 | | |
170 | 189 | | |
171 | 190 | | |
172 | | - | |
| 191 | + | |
| 192 | + | |
173 | 193 | | |
174 | 194 | | |
175 | 195 | | |
| |||
0 commit comments