Chinaunix首页 | 论坛 | 博客
  • 博客访问: 98657
  • 博文数量: 21
  • 博客积分: 1192
  • 博客等级: 少尉
  • 技术积分: 227
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-22 11:00
文章分类

全部博文(21)

文章存档

2014年(1)

2012年(16)

2011年(4)

分类: LINUX

2012-03-09 17:56:50

此问题为minicom的一个bug,可以参考:
[minicom-Bugs][313217] runscript crash when using environment variable in scripthttp://lists.alioth.debian.org/pipermail/minicom-devel/2011/001101.html
2.4 对应的源代码:


  1. char *getword(char **s)
  2. {
  3.   static unsigned bufsize;
  4.   static char *buf; /* The buffer is only growing and never freed... */
  5.   unsigned int len;
  6.   int f;
  7.   int idx = 0;
  8.   const char *t = *s;
  9.   int sawesc = 0;
  10.   int sawq = 0;
  11.   const char *env;
  12.   char envbuf[32];

  13.   if (**s == 0)
  14.     return NULL;

  15.   for (len = 0; ; len++) {
  16.     if (idx + 3 > (int)bufsize)
  17.       {
  18.         bufsize += 50;
  19.         fprintf(stderr, "bigger %d\n", bufsize);
  20.         buf = realloc(buf, bufsize);
  21.       }
bufsize 未初始化

minicom 2.5 已经修正:


  1. char *getword(char **s)
  2. {
  3.   unsigned int len;
  4.   int f;
  5.   int idx = 0;
  6.   const char *t = *s;
  7.   int sawesc = 0;
  8.   int sawq = 0;
  9.   const char *env;
  10.   char envbuf[32];

  11.   if (**s == 0)
  12.     return NULL;

  13.   for (len = 0; ; len++) {
  14.     if (sawesc && t[len]) {
  15.       sawesc = 0;
  16.       if (t[len] <= '7' && t[len] >= '0') {
  17.         buf_wr(idx, 0);
  18.         for (f = 0; f < 4 && len < bufsize() && t[len] <= '7' &&
  19.              t[len] >= '0'; f++)
  20.           buf_wr(idx, 8 * buf_rd(idx) + t[len++] - '0');
  21.         if (buf_rd(idx) == 0)
  22.           buf_wr(idx, '@');
  23.         idx++;
  24.         len--;
  25.         continue;
  26.       }


阅读(2049) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~