Commit 662fb4fc authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

media: atomisp: get rid of a string_support.h abstraction layer



Some parts of the driver have their own implementation of
memcpy() & friends. Replace all of them by strscpy().

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 48b532b9
Loading
Loading
Loading
Loading
+0 −165
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Support for Intel Camera Imaging ISP subsystem.
 * Copyright (c) 2015, Intel Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 */

#ifndef __STRING_SUPPORT_H_INCLUDED__
#define __STRING_SUPPORT_H_INCLUDED__
#include <platform_support.h>
#include <type_support.h>

/*
 * For all non microsoft cases, we need the following functions
 */

/* @brief Copy from src_buf to dest_buf.
 *
 * @param[out] dest_buf. Destination buffer to copy to
 * @param[in]  dest_size. The size of the destination buffer in bytes
 * @param[in]  src_buf. The source buffer
 * @param[in]  src_size. The size of the source buffer in bytes
 * @return     0 on success, error code on failure
 * @return     -EINVAL on Invalid arguments
 * @return     ERANGE on Destination size too small
 */
static inline int memcpy_s(
    void *dest_buf,
    size_t dest_size,
    const void *src_buf,
    size_t src_size)
{
	if ((!src_buf) || (!dest_buf)) {
		/* Invalid arguments*/
		return -EINVAL;
	}

	if ((dest_size < src_size) || (src_size == 0)) {
		/* Destination too small*/
		return ERANGE;
	}

	memcpy(dest_buf, src_buf, src_size);
	return 0;
}

/* @brief Get the length of the string, excluding the null terminator
 *
 * @param[in]  src_str. The source string
 * @param[in]  max_len. Look only for max_len bytes in the string
 * @return     Return the string length excluding null character
 * @return     Return max_len if no null character in the first max_len bytes
 * @return     Returns 0 if src_str is NULL
 */
static size_t strnlen_s(
    const char *src_str,
    size_t max_len)
{
	size_t ix;

	if (!src_str) {
		/* Invalid arguments*/
		return 0;
	}

	for (ix = 0; ix < max_len && src_str[ix] != '\0'; ix++)
		;

	/* On Error, it will return src_size == max_len*/
	return ix;
}

/* @brief Copy string from src_str to dest_str
 *
 * @param[out] dest_str. Destination buffer to copy to
 * @param[in]  dest_size. The size of the destination buffer in bytes
 * @param[in]  src_str. The source buffer
 * @param[in]  src_size. The size of the source buffer in bytes
 * @return     Returns 0 on success
 * @return     Returns -EINVAL on invalid arguments
 * @return     Returns ERANGE on destination size too small
 */
static inline int strncpy_s(
    char *dest_str,
    size_t dest_size,
    const char *src_str,
    size_t src_size)
{
	size_t len;

	if (!dest_str) {
		/* Invalid arguments*/
		return -EINVAL;
	}

	if ((!src_str) || (dest_size == 0)) {
		/* Invalid arguments*/
		dest_str[0] = '\0';
		return -EINVAL;
	}

	len = strnlen_s(src_str, src_size);

	if (len >= dest_size) {
		/* Destination too small*/
		dest_str[0] = '\0';
		return ERANGE;
	}

	/* dest_str is big enough for the len */
	strncpy(dest_str, src_str, len);
	dest_str[len] = '\0';
	return 0;
}

/* @brief Copy string from src_str to dest_str
 *
 * @param[out] dest_str. Destination buffer to copy to
 * @param[in]  dest_size. The size of the destination buffer in bytes
 * @param[in]  src_str. The source buffer
 * @return     Returns 0 on success
 * @return     Returns -EINVAL on invalid arguments
 * @return     Returns ERANGE on destination size too small
 */
static inline int strcpy_s(
    char *dest_str,
    size_t dest_size,
    const char *src_str)
{
	size_t len;

	if (!dest_str) {
		/* Invalid arguments*/
		return -EINVAL;
	}

	if ((!src_str) || (dest_size == 0)) {
		/* Invalid arguments*/
		dest_str[0] = '\0';
		return -EINVAL;
	}

	len = strnlen_s(src_str, dest_size);

	if (len >= dest_size) {
		/* Destination too small*/
		dest_str[0] = '\0';
		return ERANGE;
	}

	/* dest_str is big enough for the len */
	strncpy(dest_str, src_str, len);
	dest_str[len] = '\0';
	return 0;
}

#endif /* __STRING_SUPPORT_H_INCLUDED__ */
+2 −1
Original line number Diff line number Diff line
@@ -13,8 +13,9 @@
 * more details.
 */

#include <linux/string.h> /* for memcpy() */

#include <type_support.h>
#include <string_support.h> /* memcpy */
#include "system_global.h"
#include "vamem.h"
#include "ia_css_types.h"
+2 −1
Original line number Diff line number Diff line
@@ -13,8 +13,9 @@
 * more details.
 */

#include <linux/string.h> /* for memcpy() */

#include <type_support.h>
#include <string_support.h> /* memcpy */
#include "system_global.h"
#include "vamem.h"
#include "ia_css_types.h"
+2 −1
Original line number Diff line number Diff line
@@ -13,8 +13,9 @@
 * more details.
 */

#include <linux/string.h> /* for memcpy() */

#include <type_support.h>
#include <string_support.h> /* memcpy */
#include "system_global.h"
#include "vamem.h"
#include "ia_css_types.h"
+2 −1
Original line number Diff line number Diff line
@@ -13,8 +13,9 @@
 * more details.
 */

#include <linux/string.h> /* for memcpy() */

#include <type_support.h>
#include <string_support.h> /* memcpy */
#include "system_global.h"
#include "vamem.h"
#include "ia_css_types.h"
Loading