[Freeswitch-svn] [commit] r6816 - freeswitch/trunk/src
Freeswitch SVN
mikej at freeswitch.org
Sat Dec 15 15:04:49 EST 2007
Author: mikej
Date: Sat Dec 15 15:04:49 2007
New Revision: 6816
Modified:
freeswitch/trunk/src/switch.c
Log:
cleanups, avoid null deref, check returns of some more functions, use switch_snprintf to make sure we are null terminating strings.
Modified: freeswitch/trunk/src/switch.c
==============================================================================
--- freeswitch/trunk/src/switch.c (original)
+++ freeswitch/trunk/src/switch.c Sat Dec 15 15:04:49 2007
@@ -83,7 +83,7 @@
switch_core_set_globals();
/* get the full path of the pid file. */
- snprintf(path, sizeof(path), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, pfile);
+ switch_snprintf(path, sizeof(path), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, pfile);
/* open the pid file */
if ((f = fopen(path, "r")) == 0) {
@@ -116,9 +116,9 @@
} else {
/* signal the event to shutdown */
SetEvent(shutdown_event);
+ /* cleanup */
+ CloseHandle(shutdown_event);
}
- /* cleanup */
- CloseHandle(shutdown_event);
#else
/* for unix, send the signal to kill. */
kill(pid, SIGTERM);
@@ -213,7 +213,7 @@
int known_opt;
int high_prio = 0;
switch_core_flag_t flags = SCF_USE_SQL;
- int status;
+ int ret;
switch_file_t *fd;
switch_memory_pool_t *pool = NULL;
@@ -265,11 +265,13 @@
known_opt++;
GetModuleFileName(NULL, exePath, 1024);
snprintf(servicePath, sizeof(servicePath), "%s -service", exePath);
- CreateService(handle,
+ if (!CreateService(handle,
SERVICENAME,
SERVICENAME,
GENERIC_READ | GENERIC_EXECUTE,
- SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, servicePath, NULL, NULL, NULL, NULL, NULL);
+ SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, servicePath, NULL, NULL, NULL, NULL, NULL)) {
+ fprintf(stderr, "Error installing freeswitch as a service.\n");
+ }
exit(0);
}
if (argv[x] && !strcmp(argv[x], "-uninstall")) {
@@ -377,11 +379,15 @@
known_opt++;
}
- if ((!known_opt || argv[x]) && (!strcmp(argv[x], "-help") || !strcmp(argv[x], "-h") || !strcmp(argv[x], "-?"))) {
+ if (!known_opt || (argv[x] && (!strcmp(argv[x], "-help") || !strcmp(argv[x], "-h") || !strcmp(argv[x], "-?")))) {
printf("%s\n", usageDesc);
exit(0);
}
+ }
+ if (apr_initialize() != SWITCH_STATUS_SUCCESS) {
+ fprintf(stderr, "FATAL ERROR! Could not initilize APR\n");
+ return 255;
}
if (die) {
@@ -419,17 +425,12 @@
}
#endif
- if (apr_initialize() != SWITCH_STATUS_SUCCESS) {
- fprintf(stderr, "FATAL ERROR! Could not initilize APR\n");
- return 255;
- }
-
switch_core_set_globals();
pid = getpid();
- snprintf(pid_path, sizeof(pid_path), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, pfile);
- snprintf(pid_buffer, sizeof(pid_buffer), "%d", pid);
+ switch_snprintf(pid_path, sizeof(pid_path), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, pfile);
+ switch_snprintf(pid_buffer, sizeof(pid_buffer), "%d", pid);
pid_len = strlen(pid_buffer);
apr_pool_create(&pool, NULL);
@@ -456,12 +457,15 @@
switch_core_runtime_loop(nc);
- status = switch_core_destroy();
+ ret = switch_core_destroy();
switch_file_close(fd);
- unlink(pid_path);
- return status;
+ if (unlink(pid_path) != 0) {
+ fprintf(stderr, "Failed to delete pid file [%s]\n", pid_path);
+ }
+
+ return ret;
}
/* For Emacs:
More information about the Freeswitch-svn
mailing list