Diff for /embedtools/src/ub_env.c between versions 1.1.2.13 and 1.1.2.16

version 1.1.2.13, 2014/01/29 13:37:13 version 1.1.2.16, 2014/01/29 14:01:06
Line 9  ub_flash_io(const char *csSec, int mode) Line 9  ub_flash_io(const char *csSec, int mode)
 {  {
         int f, l, rlen;          int f, l, rlen;
         const char *str;          const char *str;
        size_t siz, esiz;        ssize_t siz, esiz;
         ait_val_t v;          ait_val_t v;
         u_int crc;          u_int crc;
   
Line 49  ub_flash_io(const char *csSec, int mode) Line 49  ub_flash_io(const char *csSec, int mode)
   
         if (mode & O_RDWR) {          if (mode & O_RDWR) {
                 env->env_crc = crc32(0, (u_char*) env->env_data, esiz);                  env->env_crc = crc32(0, (u_char*) env->env_data, esiz);
                   VERB(5) printf("Write CRC32 0x%x\n", env->env_crc);
                 rlen = write(f, env, siz);                  rlen = write(f, env, siz);
                 if (rlen != siz)                  if (rlen != siz)
                         printf("Error:: written %d bytes != %d\n", rlen, siz);                          printf("Error:: written %d bytes != %d\n", rlen, siz);
Line 64  ub_flash_io(const char *csSec, int mode) Line 65  ub_flash_io(const char *csSec, int mode)
                 VERB(3) printf("Readed %d bytes\n", rlen);                  VERB(3) printf("Readed %d bytes\n", rlen);
   
         crc = crc32(0, (u_char*) env->env_data, esiz);          crc = crc32(0, (u_char*) env->env_data, esiz);
           VERB(5) printf("Calculated CRC32 0x%x\n", crc);
         if (crc != env->env_crc)          if (crc != env->env_crc)
                 VERB(1) printf("Warning:: Bad CRC, Flash crc32 0x%x != 0x%x\n",                   VERB(1) printf("Warning:: Bad CRC, Flash crc32 0x%x != 0x%x\n", 
                                 env->env_crc, crc);                                  env->env_crc, crc);
Line 122  const char* Line 124  const char*
 ub_getenv(const char *csSec, const char *csName)  ub_getenv(const char *csSec, const char *csName)
 {  {
         char *e, *nxt;          char *e, *nxt;
        size_t dlen;        size_t dlen = 0;
         const char *str = NULL;          const char *str = NULL;
   
         FTRACE(3);          FTRACE(3);
Line 132  ub_getenv(const char *csSec, const char *csName) Line 134  ub_getenv(const char *csSec, const char *csName)
                 str = cfg_getAttribute(&cfg, csSec, "drive_size");                  str = cfg_getAttribute(&cfg, csSec, "drive_size");
                 if (!str)                  if (!str)
                         return NULL;                          return NULL;
                   dlen -= sizeof env->env_crc;
         }          }
        dlen = strtol(str, NULL, 0);        dlen += strtol(str, NULL, 0);
         if (!dlen)          if (!dlen)
                 return NULL;                  return NULL;
         else          else
Line 158  int Line 161  int
 ub_setenv(const char *csSec, const char *csName, const char *csValue)  ub_setenv(const char *csSec, const char *csName, const char *csValue)
 {  {
         char *e, *nxt;          char *e, *nxt;
        size_t dlen, len;        ssize_t dlen = 0, len;
         const char *str, *old = NULL;          const char *str, *old = NULL;
   
         FTRACE(3);          FTRACE(3);
Line 168  ub_setenv(const char *csSec, const char *csName, const Line 171  ub_setenv(const char *csSec, const char *csName, const
                 str = cfg_getAttribute(&cfg, csSec, "drive_size");                  str = cfg_getAttribute(&cfg, csSec, "drive_size");
                 if (!str)                  if (!str)
                         return -1;                          return -1;
                   dlen -= sizeof env->env_crc;
         }          }
        dlen = strtol(str, NULL, 0);        dlen += strtol(str, NULL, 0);
         if (!dlen)          if (!dlen)
                 return -1;                  return -1;
         else          else
Line 206  ub_setenv(const char *csSec, const char *csName, const Line 210  ub_setenv(const char *csSec, const char *csName, const
                 for (e = env->env_data; *e || *(e + 1); e++);                  for (e = env->env_data; *e || *(e + 1); e++);
                 if (e > env->env_data)                  if (e > env->env_data)
                         e++;                          e++;
                /* "name" + "=" + "val" +"\0\0"  > u-boot-env size */                /* "name" + "=" + "val" +"\0\0" check u-boot-env size */
                 len = strlen(csName) + 2; /* add '=' for first arg, ' ' for all others */                  len = strlen(csName) + 2; /* add '=' for first arg, ' ' for all others */
                 len += strlen(csValue) + 1;                  len += strlen(csValue) + 1;
                 if (len > env->env_data + dlen - e) {                  if (len > env->env_data + dlen - e) {
Line 236  int Line 240  int
 ub_env(const char *csSec)  ub_env(const char *csSec)
 {  {
         char *e, *nxt;          char *e, *nxt;
        size_t dlen;        ssize_t dlen = 0;
         const char *str;          const char *str;
   
         FTRACE(3);          FTRACE(3);
Line 246  ub_env(const char *csSec) Line 250  ub_env(const char *csSec)
                 str = cfg_getAttribute(&cfg, csSec, "drive_size");                  str = cfg_getAttribute(&cfg, csSec, "drive_size");
                 if (!str)                  if (!str)
                         return -1;                          return -1;
                   dlen -= sizeof env->env_crc;
         }          }
        dlen = strtol(str, NULL, 0);        dlen += strtol(str, NULL, 0);
         if (!dlen)          if (!dlen)
                 return -1;                  return -1;
         else          else

Removed from v.1.1.2.13  
changed lines
  Added in v.1.1.2.16


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>