#if !defined(CONFIG_ENV_IS_IN_EEPROM) && \
!defined(CONFIG_ENV_IS_IN_FLASH) && \
- !defined(CONFIG_ENV_IS_IN_DATAFLASH) && \
!defined(CONFIG_ENV_IS_IN_MMC) && \
!defined(CONFIG_ENV_IS_IN_FAT) && \
!defined(CONFIG_ENV_IS_IN_EXT4) && \
!defined(CONFIG_ENV_IS_IN_REMOTE) && \
!defined(CONFIG_ENV_IS_IN_UBI) && \
!defined(CONFIG_ENV_IS_NOWHERE)
-# error Define one of CONFIG_ENV_IS_IN_{EEPROM|FLASH|DATAFLASH|MMC|FAT|EXT4|\
+# error Define one of CONFIG_ENV_IS_IN_{EEPROM|FLASH|MMC|FAT|EXT4|\
NAND|NVRAM|ONENAND|SATA|SPI_FLASH|REMOTE|UBI} or CONFIG_ENV_IS_NOWHERE
#endif
sprintf(message, "Please enter '%s': ", argv[1]);
} else {
/* env_ask envname message1 ... messagen [size] */
- for (i = 2, pos = 0; i < argc; i++) {
+ for (i = 2, pos = 0; i < argc && pos+1 < sizeof(message); i++) {
if (pos)
message[pos++] = ' ';
- strcpy(message + pos, argv[i]);
+ strncpy(message + pos, argv[i], sizeof(message) - pos);
pos += strlen(argv[i]);
}
- message[pos++] = ' ';
- message[pos] = '\0';
+ if (pos < sizeof(message) - 1) {
+ message[pos++] = ' ';
+ message[pos] = '\0';
+ } else
+ message[CONFIG_SYS_CBSIZE - 1] = '\0';
}
if (size >= CONFIG_SYS_CBSIZE)
*/
int env_get_f(const char *name, char *buf, unsigned len)
{
- int i, nxt;
+ int i, nxt, c;
for (i = 0; env_get_char(i) != '\0'; i = nxt + 1) {
int val, n;
- for (nxt = i; env_get_char(nxt) != '\0'; ++nxt) {
+ for (nxt = i; (c = env_get_char(nxt)) != '\0'; ++nxt) {
+ if (c < 0)
+ return c;
if (nxt >= CONFIG_ENV_SIZE)
return -1;
}
/* found; copy out */
for (n = 0; n < len; ++n, ++buf) {
- *buf = env_get_char(val++);
+ c = env_get_char(val++);
+ if (c < 0)
+ return c;
+ *buf = c;
if (*buf == '\0')
return n;
}
static int do_env_save(cmd_tbl_t *cmdtp, int flag, int argc,
char * const argv[])
{
- struct env_driver *env = env_driver_lookup_default();
-
- printf("Saving Environment to %s...\n", env->name);
-
return env_save() ? 1 : 0;
}