mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
nand: Sanitize ONFI strings.
[backport from linux commit 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe] This is part of the synchronization with the nand driver to the Linux 3.0 state. Signed-off-by: Christian Hitz <christian.hitz@aizo.com> Cc: Scott Wood <scottwood@freescale.com> Signed-off-by: Scott Wood <scottwood@freescale.com>
This commit is contained in:
parent
ff8a8a7183
commit
5454ddbc9b
3 changed files with 65 additions and 1 deletions
|
@ -2477,10 +2477,29 @@ static void nand_set_defaults(struct nand_chip *chip, int busw)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_NAND_ONFI_DETECTION
|
#ifdef CONFIG_SYS_NAND_ONFI_DETECTION
|
||||||
|
/*
|
||||||
|
* sanitize ONFI strings so we can safely print them
|
||||||
|
*/
|
||||||
|
static void sanitize_string(char *s, size_t len)
|
||||||
|
{
|
||||||
|
ssize_t i;
|
||||||
|
|
||||||
|
/* null terminate */
|
||||||
|
s[len - 1] = 0;
|
||||||
|
|
||||||
|
/* remove non printable chars */
|
||||||
|
for (i = 0; i < len - 1; i++) {
|
||||||
|
if (s[i] < ' ' || s[i] > 127)
|
||||||
|
s[i] = '?';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove trailing spaces */
|
||||||
|
strim(s);
|
||||||
|
}
|
||||||
|
|
||||||
static u16 onfi_crc16(u16 crc, u8 const *p, size_t len)
|
static u16 onfi_crc16(u16 crc, u8 const *p, size_t len)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
while (len--) {
|
while (len--) {
|
||||||
crc ^= *p++ << 8;
|
crc ^= *p++ << 8;
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
|
@ -2541,6 +2560,8 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sanitize_string(p->manufacturer, sizeof(p->manufacturer));
|
||||||
|
sanitize_string(p->model, sizeof(p->model));
|
||||||
if (!mtd->name)
|
if (!mtd->name)
|
||||||
mtd->name = p->model;
|
mtd->name = p->model;
|
||||||
mtd->writesize = le32_to_cpu(p->byte_per_page);
|
mtd->writesize = le32_to_cpu(p->byte_per_page);
|
||||||
|
|
|
@ -47,6 +47,10 @@ extern char * strchr(const char *,int);
|
||||||
#ifndef __HAVE_ARCH_STRRCHR
|
#ifndef __HAVE_ARCH_STRRCHR
|
||||||
extern char * strrchr(const char *,int);
|
extern char * strrchr(const char *,int);
|
||||||
#endif
|
#endif
|
||||||
|
extern char * skip_spaces(const char *);
|
||||||
|
|
||||||
|
extern char *strim(char *);
|
||||||
|
|
||||||
#ifndef __HAVE_ARCH_STRSTR
|
#ifndef __HAVE_ARCH_STRSTR
|
||||||
extern char * strstr(const char *,const char *);
|
extern char * strstr(const char *,const char *);
|
||||||
#endif
|
#endif
|
||||||
|
|
39
lib/string.c
39
lib/string.c
|
@ -214,6 +214,45 @@ char * strrchr(const char * s, int c)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* skip_spaces - Removes leading whitespace from @str.
|
||||||
|
* @str: The string to be stripped.
|
||||||
|
*
|
||||||
|
* Returns a pointer to the first non-whitespace character in @str.
|
||||||
|
*/
|
||||||
|
char *skip_spaces(const char *str)
|
||||||
|
{
|
||||||
|
while (isspace(*str))
|
||||||
|
++str;
|
||||||
|
return (char *)str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* strim - Removes leading and trailing whitespace from @s.
|
||||||
|
* @s: The string to be stripped.
|
||||||
|
*
|
||||||
|
* Note that the first trailing whitespace is replaced with a %NUL-terminator
|
||||||
|
* in the given string @s. Returns a pointer to the first non-whitespace
|
||||||
|
* character in @s.
|
||||||
|
*/
|
||||||
|
char *strim(char *s)
|
||||||
|
{
|
||||||
|
size_t size;
|
||||||
|
char *end;
|
||||||
|
|
||||||
|
s = skip_spaces(s);
|
||||||
|
size = strlen(s);
|
||||||
|
if (!size)
|
||||||
|
return s;
|
||||||
|
|
||||||
|
end = s + size - 1;
|
||||||
|
while (end >= s && isspace(*end))
|
||||||
|
end--;
|
||||||
|
*(end + 1) = '\0';
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
#ifndef __HAVE_ARCH_STRLEN
|
#ifndef __HAVE_ARCH_STRLEN
|
||||||
/**
|
/**
|
||||||
* strlen - Find the length of a string
|
* strlen - Find the length of a string
|
||||||
|
|
Loading…
Add table
Reference in a new issue