@@ -256,13 +256,17 @@ int cms_job_enroll(SessionJob_t * jobInfo, char *sessionToken,
256256
257257 res = get_enroll_config (sessionToken , jobInfo -> JobId ,
258258 jobInfo -> ConfigurationEndpoint , & enrConf );
259-
260- log_verbose ("%s::%s(%d) : KeyType: %s" , LOG_INF , enrConf -> KeyType );
261- log_verbose ("%s::%s(%d) : Store to reenroll = %s" ,
262- LOG_INF , enrConf -> StorePath );
259+ if (res != 0 ) {
260+ log_error ("%s::%s(%d) : Failed to get enrollment config" , LOG_INF );
261+ free (statusMessage );
262+ return 999 ;
263+ }
263264
264265 /* Validate returned data */
265266 if (enrConf ) {
267+ log_verbose ("%s::%s(%d) : KeyType: %s" , LOG_INF , enrConf -> KeyType );
268+ log_verbose ("%s::%s(%d) : Store to reenroll = %s" ,
269+ LOG_INF , enrConf -> StorePath );
266270 bool failed = false;
267271 /* Verify the target store isn't a directory */
268272 if (is_directory (enrConf -> StorePath )) {
@@ -294,12 +298,14 @@ int cms_job_enroll(SessionJob_t * jobInfo, char *sessionToken,
294298 jobInfo -> CompletionEndpoint , STAT_ERR , enrConf -> AuditId ,
295299 statusMessage , & enrComp );
296300 EnrollmentCompleteResp_free (enrComp );
301+ returnable = 999 ;
297302 goto exit ;
298303 }
299304 } else {
300305 log_error ("%s::%s(%d) : Error, no enrollment configuration "
301306 "returned by platform" , LOG_INF );
302- goto exit ;
307+ free (statusMessage );
308+ return 999 ;
303309 }
304310
305311 if (res == 0 &&
@@ -336,6 +342,7 @@ int cms_job_enroll(SessionJob_t * jobInfo, char *sessionToken,
336342 log_error ("%s::%s(%d) : A TPM requires a PrivateKeyPath" ,
337343 LOG_INF );
338344 status = STAT_ERR ;
345+ returnable = 999 ;
339346 append_linef (& statusMessage , "%s::%s(%d) : A TPM "
340347 "requires a PrivateKeyPath" , LOG_INF );
341348 }
@@ -349,6 +356,7 @@ int cms_job_enroll(SessionJob_t * jobInfo, char *sessionToken,
349356 "with type %s and length %d" , LOG_INF , enrConf -> KeyType ,
350357 enrConf -> KeySize );
351358 status = STAT_ERR ;
359+ returnable = 999 ;
352360 append_linef (& statusMessage , "Unable to generate key "
353361 "pair with type %s and length %d" , enrConf -> KeyType ,
354362 enrConf -> KeySize );
@@ -362,10 +370,11 @@ int cms_job_enroll(SessionJob_t * jobInfo, char *sessionToken,
362370 csrString = ssl_generate_csr (enrConf -> Subject , & csrLen ,
363371 & statusMessage );
364372 if (!csrString ) {
365- log_error ("%s::%s(%d) : Out of memory " , LOG_INF );
366- append_linef (& statusMessage , "%s::%s(%d) : Out of memory " ,
373+ log_error ("%s::%s(%d) : Failed to generate CSR " , LOG_INF );
374+ append_linef (& statusMessage , "%s::%s(%d) : Failed to generate CSR " ,
367375 LOG_INF );
368376 status = STAT_ERR ;
377+ returnable = 999 ;
369378 } else {
370379 log_verbose ("%s::%s(%d) : Successfully created CSR" ,
371380 LOG_INF );
@@ -376,15 +385,21 @@ int cms_job_enroll(SessionJob_t * jobInfo, char *sessionToken,
376385 /* Send the CSR to the Platform for signing */
377386 res = send_enrollment (sessionToken , jobInfo -> JobId ,
378387 enrConf -> EnrollEndpoint , csrString , & enrResp );
379- if (res == 0 && enrResp ) {
380- AgentApiResult_log (enrResp -> Result , & statusMessage , & status );
381- } else {
388+ if (res != 0 ) {
382389 log_error ("%s::%s(%d) : Enrollment failed with error"
383390 " code %d" , LOG_INF , res );
384391 status = STAT_ERR ;
392+ returnable = 999 ;
385393 append_linef (& statusMessage , "Enrollment failed with "
386394 "error code %d" , res );
387395 }
396+ if (res == 0 && enrResp ) {
397+ if (!AgentApiResult_log (enrResp -> Result , & statusMessage , & status )) {
398+ log_error ("%s::%s(%d) : Enrollment response indicates error" , LOG_INF );
399+ status = STAT_ERR ;
400+ returnable = 999 ;
401+ }
402+ }
388403 }
389404
390405 if (status < STAT_ERR && enrResp && enrResp -> Certificate ) {
@@ -393,12 +408,20 @@ int cms_job_enroll(SessionJob_t * jobInfo, char *sessionToken,
393408 res = save_cert_key (enrConf -> StorePath , enrConf -> PrivateKeyPath ,
394409 enrConf -> StorePassword , enrResp -> Certificate ,
395410 & statusMessage , & status );
411+ if (res != 0 || status >= STAT_ERR ) {
412+ log_error ("%s::%s(%d) : Failed to save certificate and key" , LOG_INF );
413+ returnable = 999 ;
414+ }
396415 }
397416
398417 /* Send the normal job complete */
399418 res = send_enroll_job_complete (sessionToken , jobInfo -> JobId ,
400419 jobInfo -> CompletionEndpoint , status + 1 , auditId ,
401420 statusMessage , & enrComp );
421+ if (res != 0 ) {
422+ log_error ("%s::%s(%d) : Failed to send enrollment job complete" , LOG_INF );
423+ returnable = 999 ;
424+ }
402425
403426#if defined(__RUN_CHAIN_JOBS__ )
404427 if (enrComp ) {
@@ -411,8 +434,9 @@ int cms_job_enroll(SessionJob_t * jobInfo, char *sessionToken,
411434#endif
412435
413436 if (status >= STAT_ERR ) {
414- log_info ("%s::%s(%d) : Enrollment job %s failed with error: %s" ,
437+ log_error ("%s::%s(%d) : Enrollment job %s failed with error: %s" ,
415438 LOG_INF , jobInfo -> JobId , statusMessage );
439+ returnable = 999 ;
416440 } else if (status == STAT_WARN ) {
417441 log_warn ("%s::%s(%d) : Enrollment job %s completed with"
418442 " warning: %s" , LOG_INF , jobInfo -> JobId , statusMessage );
0 commit comments