NetFSServer: Forward errors and fix use-after-free.
At least right now, the constructor of ServerInfoSender can only fail because of OOM. Signed-off-by: Augustin Cavalier <[email protected]> Fixes #11716. One minor tweak by me from the original patch (change "!sender" to "sender == NULL").
This commit is contained in:
committed by
Augustin Cavalier
parent
4a35186ac2
commit
2201ddd6d0
@@ -800,7 +800,7 @@ NetFSServer::_LoadSecurityContext(SecurityContext** _securityContext)
|
|||||||
// load the fallback settings, if present
|
// load the fallback settings, if present
|
||||||
BPath path;
|
BPath path;
|
||||||
DriverSettings settings;
|
DriverSettings settings;
|
||||||
|
|
||||||
if (_GetSettingsDirPath(&path, false) == B_OK
|
if (_GetSettingsDirPath(&path, false) == B_OK
|
||||||
&& path.Append(kFallbackSettingsFileName) == B_OK
|
&& path.Append(kFallbackSettingsFileName) == B_OK
|
||||||
&& settings.Load(path.Path()) == B_OK) {
|
&& settings.Load(path.Path()) == B_OK) {
|
||||||
@@ -1283,9 +1283,15 @@ NetFSServer::_ServerInfoConnectionListener()
|
|||||||
|
|
||||||
// create a server info sender thread
|
// create a server info sender thread
|
||||||
ServerInfoSender* sender = new(std::nothrow) ServerInfoSender(fd, info);
|
ServerInfoSender* sender = new(std::nothrow) ServerInfoSender(fd, info);
|
||||||
if (!sender || sender->Init() != B_OK) {
|
if (sender == NULL) {
|
||||||
closesocket(fd);
|
closesocket(fd);
|
||||||
delete sender;
|
delete sender;
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
}
|
||||||
|
if ((error = sender->Init()) != B_OK) {
|
||||||
|
closesocket(fd);
|
||||||
|
delete sender;
|
||||||
|
return error;
|
||||||
}
|
}
|
||||||
taskManager.RunTask(sender);
|
taskManager.RunTask(sender);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user