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-07 12:39:30.906524000 +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-07 12:39:30.962305000 +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-07 12:39:31.067358000 +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-07 12:44:07.300112000 +0530 *************** *** 3056,3065 **** } //Read first 4 bytes and get the buffere size. ! bufSizePointer[3] = buffer->data[0]; ! bufSizePointer[2] = buffer->data[1]; ! bufSizePointer[1] = buffer->data[2]; ! bufSizePointer[0] = buffer->data[3]; if (dwBufferSizeInBuffer != buffer->size) { --- 3056,3065 ---- } //Read first 4 bytes and get the buffere size. ! bufSizePointer[0] = buffer->data[0]; ! bufSizePointer[1] = buffer->data[1]; ! bufSizePointer[2] = buffer->data[2]; ! bufSizePointer[3] = buffer->data[3]; if (dwBufferSizeInBuffer != buffer->size) { *************** *** 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); 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-07 12:39:31.348819000 +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/ConfigurationManager/schema.c ./dsc/LCM/dsc/engine/ConfigurationManager/schema.c *** ./dsc.original/LCM/dsc/engine/ConfigurationManager/schema.c 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/dsc/engine/ConfigurationManager/schema.c 2016-03-07 12:39:31.403543000 +0530 *************** *** 6072,6077 **** --- 6072,6093 ---- 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, *************** *** 6092,6097 **** --- 6108,6114 ---- &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/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-07 12:39:31.485557000 +0530 *************** *** 62,71 **** 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( buf, TIMESTAMP_SIZE, --- 62,71 ---- static int _GetDSCTimeStamp(_Pre_writable_size_(TIMESTAMP_SIZE) char buf[TIMESTAMP_SIZE]) { ! time_t ltime; struct tm tm; ! ltime = time(NULL); ! localtime_r(<ime, &tm); snprintf( buf, TIMESTAMP_SIZE, diff -crB ./dsc.original/LCM/dsc/engine/lcm/GNUmakefile ./dsc/LCM/dsc/engine/lcm/GNUmakefile *** ./dsc.original/LCM/dsc/engine/lcm/GNUmakefile 2016-01-15 04:04:23.000000000 +0530 --- ./dsc/LCM/dsc/engine/lcm/GNUmakefile 2016-03-07 12:40:56.239267000 +0530 *************** *** 26,32 **** DEFINES = MI_CONST= HOOK_BUILD $(BUILD_OMS) ! LIBRARIES = ConfigurationManager CAEngine ModuleHandler EngineHelper CALogInfrastructure mi pal omi_error micodec mofparser base pal curl include $(OMI)/mak/rules.mak --- 26,32 ---- DEFINES = MI_CONST= HOOK_BUILD $(BUILD_OMS) ! LIBRARIES = ConfigurationManager CAEngine ModuleHandler EngineHelper CALogInfrastructure mi pal omi_error micodec mofparser base pal curl f10mc z include $(OMI)/mak/rules.mak 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-07 12:39:31.701770000 +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-07 12:39:31.750759000 +0530 *************** *** 53,58 **** --- 53,59 ---- MI_ConstUint32Field error_Code; MI_ConstStringField error_Type; MI_ConstUint16Field error_Category; + MI_ConstStringField OMI_ErrorMessage; } OMI_Error;