--- signer/src/ods-signer.c 2014-06-19 14:32:57.020658844 +0200 +++ signer/src/ods-signer.c 2014-06-19 15:02:00.298668676 +0200 @@ -268,6 +268,7 @@ int sockfd, ret, flags; struct sockaddr_un servaddr; const char* servsock_filename = ODS_SE_SOCKFILE; + char *cfgcmd = NULL; ods_log_init(NULL, 0, 0); @@ -292,6 +293,21 @@ if (cmd && ods_strcmp(cmd, "start\n") == 0) { return system(ODS_SE_ENGINE); } + if (cmd && (strncmp(cmd, "start ", 6) == 0)) { + // Construct ODS_SE_ENGINE + " -c " + cmd[6:-1] + cfgcmd = malloc(strlen(ODS_SE_ENGINE) + 4 + strlen(cmd)-7 + 1); + if (cfgcmd == NULL) { + fprintf(stderr, "Failed to allocate memory for start command.\n"); + return ENOMEM; + } + strcpy(cfgcmd, ODS_SE_ENGINE); + strcat(cfgcmd, " -c "); + memcpy(cfgcmd + strlen(ODS_SE_ENGINE)+4, cmd + 6, strlen(cmd)-7); + cfgcmd [strlen(ODS_SE_ENGINE) + 4 + strlen(cmd)-7] = 0; + ret = system(cfgcmd); + free(cfgcmd); + return ret; + } if (cmd && ods_strcmp(cmd, "running\n") == 0) { fprintf(stderr, "Engine not running.\n"); --- tools/ods-control.in 2014-06-19 15:24:06.167657834 +0200 +++ tools/ods-control.in 2014-06-19 15:26:16.056811721 +0200 @@ -33,6 +33,7 @@ enforcer_pid_file="@OPENDNSSEC_ENFORCER_PIDFILE@" signer_pid_file="@OPENDNSSEC_SIGNER_PIDFILE@" signer_socket_file="@OPENDNSSEC_SIGNER_SOCKET@" +signer_config_file="@OPENDNSSEC_CONFIG_DIR@/conf.xml" case "$1" in @@ -52,7 +53,7 @@ 'start') echo "Starting signer engine..." - "$sbindir/ods-signer" start + "$sbindir/ods-signer" start "$signer_config_file" RETVAL=$? if [ $RETVAL = 0 ]; then