diff -crB ./dsc.original/LCM/codec/mof/parser/utility.c ./dsc/LCM/codec/mof/parser/utility.c *** ./dsc.original/LCM/codec/mof/parser/utility.c 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/codec/mof/parser/utility.c 2016-03-08 09:12:25.966724000 +0530 *************** *** 569,574 **** --- 569,575 ---- MI_Result mof_setupbuffer(void * data, size_t nBytes, Batch *batch, MOF_Buffer * b) { MOF_ENCODING_TYPE e = ANSI; + unsigned char *tPtr; unsigned char *p = (unsigned char *)data; memset(b, 0, sizeof(MOF_Buffer)); *************** *** 658,664 **** if( *nullPointer != '\0' ) return MI_RESULT_NOT_SUPPORTED; ! p[xCount] = (unsigned char) tempBuf[xCount]; nullPointer +=2; } b->e.u = MI_FALSE; --- 659,666 ---- if( *nullPointer != '\0' ) return MI_RESULT_NOT_SUPPORTED; ! tPtr = (unsigned char *) (unsigned short *)&tempBuf[xCount]; ! p[xCount] = tPtr[0]; nullPointer +=2; } b->e.u = MI_FALSE; diff -crB ./dsc.original/LCM/config.mak ./dsc/LCM/config.mak *** ./dsc.original/LCM/config.mak 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/config.mak 2016-03-08 09:12:26.020595000 +0530 *************** *** 1,4 **** ! OMI = $(TOP)/../omi-1.0.8 OUTPUTDIR = $(OMI)/output include $(OMI)/config.mak --- 1,4 ---- ! OMI = $(TOP)/../../omi-1.0.8 OUTPUTDIR = $(OMI)/output include $(OMI)/config.mak diff -crB ./dsc.original/LCM/dsc/common/inc/OMI_Error.h ./dsc/LCM/dsc/common/inc/OMI_Error.h *** ./dsc.original/LCM/dsc/common/inc/OMI_Error.h 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/dsc/common/inc/OMI_Error.h 2016-03-08 09:12:26.181231000 +0530 *************** *** 53,58 **** --- 53,59 ---- MI_ConstUint32Field error_Code; MI_ConstStringField error_Type; MI_ConstUint16Field error_Category; + MI_ConstStringField OMI_ErrorMessage; } OMI_Error; diff -crB ./dsc.original/LCM/dsc/engine/ConfigurationManager/LocalConfigManagerHelper.c ./dsc/LCM/dsc/engine/ConfigurationManager/LocalConfigManagerHelper.c *** ./dsc.original/LCM/dsc/engine/ConfigurationManager/LocalConfigManagerHelper.c 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/dsc/engine/ConfigurationManager/LocalConfigManagerHelper.c 2016-03-08 11:46:32.159936000 +0530 *************** *** 4665,4670 **** --- 4665,4672 ---- return r; } + MI_Boolean g_metaConfigUpdateInProgress = MI_FALSE; + MI_Result SetMetaConfig( _In_ const MI_Instance * metaConfigInstance, _Outptr_result_maybenull_ MI_Instance **cimErrorDetails) *************** *** 4679,4684 **** --- 4681,4693 ---- return MI_RESULT_INVALID_PARAMETER; } *cimErrorDetails = NULL; // Explicitly set *cimErrorDetails to NULL as _Outptr_ requires setting this at least once. + if (metaConfigInstance == g_metaConfig) { + if (g_metaConfigUpdateInProgress == MI_TRUE) { + return MI_RESULT_OK; + } else { + g_metaConfigUpdateInProgress = MI_TRUE; + } + } r = InitializeModuleManager(0, cimErrorDetails, &moduleManager); if (r != MI_RESULT_OK) *************** *** 4722,4727 **** --- 4731,4737 ---- { MSFT_DSCMetaConfiguration_Delete(g_metaConfig); g_metaConfig = tmpInstance; + g_metaConfigUpdateInProgress = MI_FALSE; } r = RegisterConsistencyTask((MI_Instance *)g_metaConfig, cimErrorDetails); Only in ./dsc/LCM/dsc/engine/ConfigurationManager: LocalConfigManagerHelper.c~ diff -crB ./dsc.original/LCM/dsc/engine/ConfigurationManager/OMI_LocalConfigManagerHelper.c ./dsc/LCM/dsc/engine/ConfigurationManager/OMI_LocalConfigManagerHelper.c *** ./dsc.original/LCM/dsc/engine/ConfigurationManager/OMI_LocalConfigManagerHelper.c 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/dsc/engine/ConfigurationManager/OMI_LocalConfigManagerHelper.c 2016-03-08 09:12:26.472564000 +0530 *************** *** 48,53 **** --- 48,54 ---- MI_Char *line = NULL, *lineToWrite = NULL, *taskInCrontab = NULL; FILE *cronFile = NULL, *cronFileTmp = NULL; MI_Uint32 errorCode = 0; + MI_Char name[UNIT_LINE_SIZE],value[UNIT_LINE_SIZE]; if (extendedError == NULL) { *************** *** 113,122 **** { retValue = TcsStrlcpy(lineToWrite, line, Tcslen(line)+1); retValue = sscanf(line, MI_T("%*s %*s %*s %*s %*s %*s %s"), taskInCrontab); ! if (retValue == 0) { ! // Ignore the bad line that does not comply with crontab file format ! continue; } else { --- 114,138 ---- { retValue = TcsStrlcpy(lineToWrite, line, Tcslen(line)+1); retValue = sscanf(line, MI_T("%*s %*s %*s %*s %*s %*s %s"), taskInCrontab); ! if (retValue <= 0) { ! memset(name, 0, UNIT_LINE_SIZE); ! memset(value, 0, UNIT_LINE_SIZE); ! if (sscanf(line, MI_T("%[^=]=%s"), name, value) <= 1) ! { ! // Ignore the bad line that does not comply with crontab file format ! continue; ! } ! else ! { ! // Write the entry to crontabtmp file ! writeLength = fwrite(lineToWrite, 1, Tcslen(lineToWrite), cronFileTmp); ! if (writeLength != read) ! { ! errorCode = ID_LCMHELPER_WRITEFILE_ERROR; ! goto ExitWithError; ! } ! } } else { *************** *** 204,210 **** do { ch = fgetc(stream); ! if (ch == EOF) break; if (length + 1 >= allocated) { --- 220,226 ---- do { ch = fgetc(stream); ! if (ch == (char)EOF) break; if (length + 1 >= allocated) { diff -crB ./dsc.original/LCM/dsc/engine/EngineHelper/EventWrapper.c ./dsc/LCM/dsc/engine/EngineHelper/EventWrapper.c *** ./dsc.original/LCM/dsc/engine/EngineHelper/EventWrapper.c 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/dsc/engine/EngineHelper/EventWrapper.c 2016-03-08 09:24:18.163072000 +0530 *************** *** 62,69 **** static int _GetDSCTimeStamp(_Pre_writable_size_(TIMESTAMP_SIZE) char buf[TIMESTAMP_SIZE]) { ! MI_Uint64 usec = (MI_Uint64) CPU_GetTimeStamp(); ! time_t t = usec / 1000000; struct tm tm; localtime_r(&t, &tm); snprintf( --- 62,69 ---- static int _GetDSCTimeStamp(_Pre_writable_size_(TIMESTAMP_SIZE) char buf[TIMESTAMP_SIZE]) { ! // MI_Uint64 usec = (MI_Uint64) CPU_GetTimeStamp(); ! time_t t = time(NULL); struct tm tm; localtime_r(&t, &tm); snprintf( diff -crB ./dsc.original/LCM/omiutils/errors.c ./dsc/LCM/omiutils/errors.c *** ./dsc.original/LCM/omiutils/errors.c 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/omiutils/errors.c 2016-03-08 09:12:37.813402000 +0530 *************** *** 1639,1645 **** MI_T("OMI_Error"), /* propagator */ NULL, }; ! static MI_PropertyDecl MI_CONST* MI_CONST OMI_Error_props[] = { &CIM_Error_ErrorType_prop, --- 1639,1659 ---- MI_T("OMI_Error"), /* propagator */ NULL, }; ! static MI_CONST MI_PropertyDecl OMI_Error_OMI_ErrorMessage_prop = ! { ! MI_FLAG_PROPERTY, /* flags */ ! 0x006F6510, /* code */ ! MI_T("OMI_ErrorMessage"), /* name */ ! NULL, /* qualifiers */ ! 0, /* numQualifiers */ ! MI_STRING, /* type */ ! NULL, /* className */ ! 0, /* subscript */ ! offsetof(OMI_Error, OMI_ErrorMessage), /* offset */ ! MI_T("OMI_Error"), /* origin */ ! MI_T("OMI_Error"), /* propagator */ ! NULL, ! }; static MI_PropertyDecl MI_CONST* MI_CONST OMI_Error_props[] = { &CIM_Error_ErrorType_prop, *************** *** 1660,1665 **** --- 1674,1680 ---- &OMI_Error_error_Code_prop, &OMI_Error_error_Type_prop, &OMI_Error_error_Category_prop, + &OMI_Error_OMI_ErrorMessage_prop, }; static MI_CONST MI_Boolean OMI_Error_Indication_qual_value = 1; diff -crB ./dsc.original/LCM/omiutils/OMI_Error.h ./dsc/LCM/omiutils/OMI_Error.h *** ./dsc.original/LCM/omiutils/OMI_Error.h 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/omiutils/OMI_Error.h 2016-03-08 09:12:37.912728000 +0530 *************** *** 53,58 **** --- 53,59 ---- MI_ConstUint32Field error_Code; MI_ConstStringField error_Type; MI_ConstUint16Field error_Category; + MI_ConstStringField OMI_ErrorMessage; } OMI_Error;