-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[dhcp6relay] Check interface address is not NULL #11359
Conversation
src/dhcp6relay/src/relay.cpp
Outdated
@@ -343,7 +343,7 @@ void prepare_relay_config(relay_config *interface_config, int *local_sock, int f | |||
} | |||
|
|||
ifa_tmp = ifa; | |||
while (ifa_tmp) { | |||
while (ifa_tmp && ifa_tmp->ifa_addr) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the mdio interface(no address interface) is the first node of interface list, all other normal ports will also be skipped. Is this logic correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are right. Fix it by checking it in if
condition.
Why I did it Daemon dhcp6relay may crash due to null pointer access to ifa_addr member of struct ifaddrs. It's not guaranteed that the interface must have available ifa_addr. That is true for some special virtual/pseudo interfaces. How I did it Check the pointer to ifa_addr is valid ahead of accessing it.
@kellyyeh to cherry-pick this change into dhcp relay submodule and we will take from submodule. |
Related work items: sonic-net#284, sonic-net#288, sonic-net#624, sonic-net#630, sonic-net#640, sonic-net#2164, sonic-net#2206, sonic-net#2207, sonic-net#2233, sonic-net#2234, sonic-net#2238, sonic-net#8857, sonic-net#10034, sonic-net#10519, sonic-net#10685, sonic-net#10711, sonic-net#10987, sonic-net#10990, sonic-net#11047, sonic-net#11070, sonic-net#11117, sonic-net#11186, sonic-net#11207, sonic-net#11213, sonic-net#11215, sonic-net#11220, sonic-net#11221, sonic-net#11257, sonic-net#11291, sonic-net#11298, sonic-net#11301, sonic-net#11326, sonic-net#11333, sonic-net#11335, sonic-net#11341, sonic-net#11344, sonic-net#11347, sonic-net#11359, sonic-net#11366, sonic-net#11368, sonic-net#11370, sonic-net#11372, sonic-net#11375, sonic-net#11385, sonic-net#11386, sonic-net#11394, sonic-net#11397, sonic-net#11401, sonic-net#11402, sonic-net#11403, sonic-net#11405, sonic-net#11414
Related work items: sonic-net#90, sonic-net#282, sonic-net#7652, sonic-net#11220, sonic-net#11333, sonic-net#11358, sonic-net#11359, sonic-net#11371, sonic-net#11383, sonic-net#11386, sonic-net#11391, sonic-net#11398, sonic-net#11400, sonic-net#11406, sonic-net#11414, sonic-net#11421, sonic-net#11422, sonic-net#11427, sonic-net#11448, sonic-net#11451
Why I did it
Daemon dhcp6relay may crash due to null pointer access to
ifa_addr
member ofstruct ifaddrs
. It's not guaranteed that the interface must have availableifa_addr
. That is true for some special virtual/pseudo interfaces.How I did it
Check the pointer to
ifa_addr
is valid ahead of accessing it.How to verify it
Which release branch to backport (provide reason below if selected)
Description for the changelog
Link to config_db schema for YANG module changes
A picture of a cute animal (not mandatory but encouraged)