diff -ur globus_gram_job_manager-10.42.orig/logging.c globus_gram_job_manager-10.42/logging.c --- globus_gram_job_manager-10.42.orig/logging.c 2010-03-22 15:47:53.000000000 +0100 +++ globus_gram_job_manager-10.42/logging.c 2010-04-19 05:55:09.343794723 +0200 @@ -23,6 +23,10 @@ #include <string.h> +#ifndef MAXPATHLEN +#define MAXPATHLEN 4096 +#endif + globus_logging_handle_t globus_i_gram_job_manager_log_stdio; globus_logging_handle_t globus_i_gram_job_manager_log_sys; static globus_symboltable_t globus_l_gram_log_symboltable; diff -ur globus_gram_job_manager-10.42.orig/startup_socket.c globus_gram_job_manager-10.42/startup_socket.c --- globus_gram_job_manager-10.42.orig/startup_socket.c 2010-03-22 15:47:54.000000000 +0100 +++ globus_gram_job_manager-10.42/startup_socket.c 2010-04-19 04:58:39.338545731 +0200 @@ -629,7 +629,7 @@ gss_cred_id_t cred) { int sock; - char sockpath[PATH_MAX != -1 ? PATH_MAX: _POSIX_PATH_MAX]; + char * sockpath; char byte[1]; int rc = 0; struct sockaddr_un addr; @@ -658,6 +658,36 @@ context_fd, response_fd); + sockpath = globus_malloc(strlen(manager->config->home) + + strlen(manager->config->hostname) + + strlen(manager->config->jobmanager_type) + + strlen(manager->config->service_tag) + 21); + if (sockpath == NULL) + { + rc = GLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES; + globus_gram_job_manager_log( + manager, + GLOBUS_GRAM_JOB_MANAGER_LOG_WARN, + "event=gram.send_job.end " + "level=WARN " + "http_body_fd=%d " + "context_fd=%d " + "response_fd=%d " + "status=%d " + "errno=%d " + "msg=\"%s\" " + "reason=\"%s\" " + "\n", + http_body_fd, + context_fd, + response_fd, + -rc, + errno, + "Error allocating socket path", + strerror(errno)); + goto sockpath_failed; + } + sprintf(sockpath, "%s/.globus/job/%s/%s.%s.sock", manager->config->home, @@ -999,6 +1029,8 @@ setsockopt_failed: close(sock); socket_failed: + globus_free(sockpath); +sockpath_failed: return rc; }