chan_echolink crashed when it received a request from the echolink server to process a full directory. chan_echolink attempted to free the three internal binary trees and ran into a problem with a double free. The node had already been freed but not removed from the binary tree.
There was an issue with one of the trees. The delete routine was not finding the entry and leaving it in the tree. This could be unrelated to the problem being report, it however represented a memory leak and a problem.
I consolidated some of the tree delete code into one routine. This eliminated one routine and associated call.
While I was making changes, I addressed the issue with several char fields were being defined by size plus 1. The 'define' that was used already contained the necessary size to include the trailing null character.
I replaced several uses of the define with the sizeof operator, as recommended.
chan_echolink crashed when it received a request from the echolink server to process a full directory. chan_echolink attempted to free the three internal binary trees and ran into a problem with a double free. The node had already been freed but not removed from the binary tree.
There was an issue with one of the trees. The delete routine was not finding the entry and leaving it in the tree. This could be unrelated to the problem being report, it however represented a memory leak and a problem.
I consolidated some of the tree delete code into one routine. This eliminated one routine and associated call.
While I was making changes, I addressed the issue with several char fields were being defined by size plus 1. The 'define' that was used already contained the necessary size to include the trailing null character.
I replaced several uses of the define with the sizeof operator, as recommended.
This closes #196.