Hi Vu,

The patch cannot be applied. Something wrong when merging test code

Thanks
Lennart

> -----Original Message-----
> From: Vu Minh Nguyen [mailto:[email protected]]
> Sent: den 9 oktober 2015 10:32
> To: [email protected]; Lennart Lund; Giang Do T
> Cc: [email protected]
> Subject: [PATCH 1 of 1] log: incorrect verification the string length of
> saLogStreamFileName value [#1493]
> 
>  osaf/libs/agents/saf/lga/lga_api.c         |   2 +-
>  osaf/libs/common/logsv/include/lgsv_defs.h |  10 +++++
>  osaf/services/saf/logsv/lgs/lgs_imm.c      |  22 +++++++++++-
>  tests/logsv/tet_LogOiOps.c                 |  47 +++++++++++++++++++++++++-
>  tests/logsv/tet_saLogStreamOpen_2.c        |  54
> ++++++++++++++++++++++++++++++
>  5 files changed, 131 insertions(+), 4 deletions(-)
> 
> 
> Correct the verification rule for the filename length.
> 
> diff --git a/osaf/libs/agents/saf/lga/lga_api.c
> b/osaf/libs/agents/saf/lga/lga_api.c
> --- a/osaf/libs/agents/saf/lga/lga_api.c
> +++ b/osaf/libs/agents/saf/lga/lga_api.c
> @@ -561,7 +561,7 @@ static SaAisErrorT validate_open_params(
>       /* Check implementation specific string length */
>       if (NULL != logFileCreateAttributes) {
>               len = strlen(logFileCreateAttributes-
> >logFileName);
> -             if ((len == 0) || (len > NAME_MAX)) {
> +             if ((len == 0) || (len > LOG_NAME_MAX)) {
>                       TRACE("logFileName");
>                       return
> SA_AIS_ERR_INVALID_PARAM;
>               }
> diff --git a/osaf/libs/common/logsv/include/lgsv_defs.h
> b/osaf/libs/common/logsv/include/lgsv_defs.h
> --- a/osaf/libs/common/logsv/include/lgsv_defs.h
> +++ b/osaf/libs/common/logsv/include/lgsv_defs.h
> @@ -25,4 +25,14 @@
>  // Waiting time in library for sync send, unit 10ms
>  #define LGS_WAIT_TIME 1000
> 
> +// The length of '_yyyymmdd_hhmmss_yyyymmdd_hhmmss.log' including
> null-termination char
> +#define LOG_TAIL_MAX 37
> +
> +/** The log file name format: <filename>_<createtime>_<closetime>.log
> + * '_<createtime>_<closetime>.log' part is appended by logsv and has
> above format,
> + * and '<filename>' part can set by user. Therefore, limit the length of
> <filename> from user,
> + * to make sure the log file name does not exceed the maximum length
> (NAME_MAX).
> + */
> +#define LOG_NAME_MAX (NAME_MAX - LOG_TAIL_MAX)
> +
>  #endif   /* LGSV_DEFS_H */
> diff --git a/osaf/services/saf/logsv/lgs/lgs_imm.c
> b/osaf/services/saf/logsv/lgs/lgs_imm.c
> --- a/osaf/services/saf/logsv/lgs/lgs_imm.c
> +++ b/osaf/services/saf/logsv/lgs/lgs_imm.c
> @@ -1429,7 +1429,16 @@ static SaAisErrorT check_attr_validity(S
>                               TRACE("NULL
> pointer to saLogStreamPathName");
>                               goto done;
>                       }
> -
> +
> +                     if (strlen(i_pathName) >
> PATH_MAX) {
> +                             /* Path name is too
> long */
> +                             rc =
> SA_AIS_ERR_BAD_OPERATION;
> +
>       report_oi_error(immOiHandle, opdata->ccbId,
> +
>       "saLogStreamPathName is so long");
> +
>       TRACE("saLogStreamPathName is so long (max: %d)",
> PATH_MAX);
> +                             goto done;
> +                     }
> +
>                       if
> (lgs_relative_path_check_ts(i_pathName) == true) {
> 
>       report_oi_error(immOiHandle, opdata->ccbId,
> 
>               "Path %s not valid", i_pathName);
> @@ -1453,7 +1462,16 @@ static SaAisErrorT check_attr_validity(S
>                               TRACE("NULL
> pointer to saLogStreamFileName");
>                               goto done;
>                       }
> -
> +
> +                     if (strlen(i_fileName) >
> LOG_NAME_MAX) {
> +                             /* File name is too
> long */
> +                             rc =
> SA_AIS_ERR_BAD_OPERATION;
> +
>       report_oi_error(immOiHandle, opdata->ccbId,
> +
>       "saLogStreamFileName is so long");
> +
>       TRACE("saLogStreamFileName is so long (max: %d)",
> LOG_NAME_MAX);
> +                             goto done;
> +                     }
> +
>                       if
> (chk_filepath_stream_exist(i_fileName, i_pathName,
> 
>       stream, opdata->operationType)) {
> 
>       report_oi_error(immOiHandle, opdata->ccbId,
> diff --git a/tests/logsv/tet_LogOiOps.c b/tests/logsv/tet_LogOiOps.c
> --- a/tests/logsv/tet_LogOiOps.c
> +++ b/tests/logsv/tet_LogOiOps.c
> @@ -3318,6 +3318,50 @@ void verFixLogRec_Min(void)
>      rc_validate(WEXITSTATUS(rc), 1);
>  }
> 
> +
> +/**
> + * Test cases to verify #1493
> + */
> +
> +/* Verify that it is not allowed to pass a string value to
> + * saLogStreamFileName which its length is larger than 218.
> + */
> +void verFilenameLength_01(void)
> +{
> +    int rc;
> +    char command[500];
> +     char fileName[220];
> +
> +     /* Create a string with 218 characters */
> +     memset(fileName, 'A', 218);
> +     fileName[219] = '\0';
> +
> +     /* Create an configurable obj class with invalid filename length
> */
> +    sprintf(command, "immcfg -c SaLogStreamConfig safLgStrCfg=TestLength
> "
> +                "-a saLogStreamFileName=\"%s\" -a
> saLogStreamPathName=. "
> +                "2> /dev/null", fileName);
> +    rc = system(command);
> +     rc_validate(WEXITSTATUS(rc), 1);
> +}
> +
> +/* Modify an existing value */
> +void verFilenameLength_02(void)
> +{
> +    int rc;
> +    char command[500];
> +     char fileName[220];
> +
> +     /* Create a string with 218 characters */
> +     memset(fileName, 'A', 218);
> +     fileName[219] = '\0';
> +
> +     /* Create an configurable obj class with invalid filename length
> */
> +    sprintf(command, "immcfg -a saLogStreamFileName=. -a
> saLogStreamPathName=\"%s\" %s "
> +                "2> /dev/null", fileName,
> SA_LOG_STREAM_ALARM);
> +    rc = system(command);
> +     rc_validate(WEXITSTATUS(rc), 1);
> +}
> +
>  __attribute__ ((constructor)) static void saOiOperations_constructor(void)
>  {
>       /* Stream objects */
> @@ -3419,7 +3463,6 @@ void verFixLogRec_Min(void)
>       test_case_add(5, verCCBWithValidValues, "CCB Object Modify
> many attributes with valid values, OK");
>       test_case_add(5, verCCBWithInvalidValues, "CCB Object
> Modify many attributes with one invalid values, ERR");
> 
> -
>       /* Stream configuration object */
>       /* Tests for create */
>       test_suite_add(6, "LOG OI tests, Stream configuration object
> attribute validation");
> @@ -3437,6 +3480,7 @@ void verFixLogRec_Min(void)
>       test_case_add(6, saLogOi_76, "Create:
> saLogStreamMaxFilesRotated < 128, Ok");
>       test_case_add(6, saLogOi_77, "Create:
> saLogStreamMaxFilesRotated > 128, ERR");
>       test_case_add(6, saLogOi_78, "Create:
> saLogStreamMaxFilesRotated == 128, ERR");
> +     test_case_add(6, verFilenameLength_01, "Create:
> saLogStreamFileName > 218 characters, ERR");
>       test_case_add(6, verMaxFilesRotated, "Create:
> saLogStreamMaxFilesRotated = 0, ERR");
>       test_case_add(6, verAdminOpOnConfClass, "Perform admin
> op on configurable obj class, ERR");
> 
> @@ -3461,6 +3505,7 @@ void verFixLogRec_Min(void)
>       test_case_add(6, saLogOi_113, "Modify:
> saLogStreamMaxFilesRotated < 128, Ok");
>       test_case_add(6, saLogOi_114, "Modify:
> saLogStreamMaxFilesRotated > 128, ERR");
>       test_case_add(6, saLogOi_115, "Modify:
> saLogStreamMaxFilesRotated == 128, ERR");
> +     test_case_add(6, verFilenameLength_02, "Modify:
> saLogStreamFileName > 218 characters, ERR");
> 
>       /* Add test cases to test #1288 */
>       test_case_add(6, verMaxLogRecord_01, "Modify:
> saLogStreamFixedLogRecordSize == 0, write a record = 65535 bytes, OK");
> diff --git a/tests/logsv/tet_saLogStreamOpen_2.c
> b/tests/logsv/tet_saLogStreamOpen_2.c
> --- a/tests/logsv/tet_saLogStreamOpen_2.c
> +++ b/tests/logsv/tet_saLogStreamOpen_2.c
> @@ -531,6 +531,58 @@ done:
>      }
>  }
> 
> +/**
> + * Verify that logFileName length > 218 characters is not allowed.
> + */
> +void saLogStreamOpen_2_48(void)
> +{
> +    SaAisErrorT rc = SA_AIS_OK;
> +    SaNameT logStreamName = {.length = 0 };
> +    char fileName[220];
> +
> +    memset(fileName, 'A', 218);
> +    fileName[219] = '\0';
> +
> +    strcpy((char *)logStreamName.value, SA_LOG_STREAM_APPLICATION1);
> +    logStreamName.length = strlen((char *)logStreamName.value);
> +
> +    SaLogFileCreateAttributesT_2 appLogFileCreateAttributes;
> +
> +    /* App stream information */
> +    appLogFileCreateAttributes.logFilePathName = "appstream";
> +    appLogFileCreateAttributes.logFileName = fileName;
> +    appLogFileCreateAttributes.maxLogFileSize =
> DEFAULT_APP_LOG_FILE_SIZE;
> +    appLogFileCreateAttributes.maxLogRecordSize =
> DEFAULT_APP_LOG_REC_SIZE;
> +    appLogFileCreateAttributes.haProperty = SA_TRUE;
> +    appLogFileCreateAttributes.logFileFullAction =
> SA_LOG_FILE_FULL_ACTION_ROTATE;
> +    appLogFileCreateAttributes.maxFilesRotated = 128;
> +    appLogFileCreateAttributes.logFileFmt = NULL;
> +
> +    rc = saLogInitialize(&logHandle, &logCallbacks, &logVersion);
> +    if (rc != SA_AIS_OK) {
> +        fprintf(stderr, "Failed at saLogInitialize: %d\n ", (int)rc);
> +        test_validate(rc, SA_AIS_OK);
> +        return;
> +    }
> +
> +    rc = saLogSelectionObjectGet(logHandle, &selectionObject);
> +    if (rc != SA_AIS_OK) {
> +        fprintf(stderr, "Failed at saLogSelectionObjectGet: %d \n ", 
> (int)rc);
> +        test_validate(rc, SA_AIS_OK);
> +        goto done;
> +    }
> +
> +    rc = saLogStreamOpen_2(logHandle, &logStreamName,
> &appLogFileCreateAttributes,
> +                            SA_LOG_STREAM_CREATE, SA_TIME_ONE_SECOND,
> &logStreamHandle);
> +    test_validate(rc, SA_AIS_ERR_INVALID_PARAM);
> +
> +done:
> +    rc = saLogFinalize(logHandle);
> +    if (rc != SA_AIS_OK) {
> +        fprintf(stderr, "Failed to call salogFinalize: %d\n", (int) rc);
> +    }
> +}
> +
>  extern void saLogStreamOpenAsync_2_01(void);
>  extern void saLogStreamOpenCallbackT_01(void);
>  extern void saLogWriteLog_01(void);
> @@ -607,6 +659,8 @@ extern void saLogStreamClose_01(void);
>      test_case_add(2, saLogStreamClose_01, "saLogStreamClose OK");
>      test_case_add(2, saLogStreamOpen_2_46, "saLogStreamOpen_2 with
> maxFilesRotated = 0, ERR");
>      test_case_add(2, saLogStreamOpen_2_47, "saLogStreamOpen_2 with
> maxFilesRotated = 128, ERR");
> +    test_case_add(2, saLogStreamOpen_2_48, "saLogStreamOpen_2 with
> logFileName > 218 characters, ERR");
> +
>      test_case_add(2, verFixLogRec_Max_Err, "saLogStreamOpen_2 with
> maxLogRecordSize > MAX_RECSIZE, ERR");
>      test_case_add(2, verFixLogRec_Min_Err, "saLogStreamOpen_2 with
> maxLogRecordSize < 150, ERR");
>  }

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to