コード例 #1
0
ファイル: stacktrace.c プロジェクト: cvicentiu/mariadb-10.0
static void print_buffer(char *buffer, size_t count)
{
  const char s[]= " ";
  for (; count && *buffer; --count)
  {
    my_write_stderr(isprint(*buffer) ? buffer : s, 1);
    ++buffer;
  }
}
コード例 #2
0
ファイル: stacktrace.c プロジェクト: AtVirus/SkyFireEMU
void my_safe_print_str(const char* val, int max_len)
{
  char *heap_end;

#ifdef __linux__
  if (!safe_print_str(val, max_len))
    return;
#endif

  heap_end= (char*) sbrk(0);

  if (!PTR_SANE(val))
  {
    my_safe_printf_stderr("%s", "is an invalid pointer\n");
    return;
  }

  for (; max_len && PTR_SANE(val) && *val; --max_len)
    my_write_stderr((val++), 1);
  my_safe_printf_stderr("%s", "\n");
}
コード例 #3
0
ファイル: stacktrace.c プロジェクト: cvicentiu/mariadb-10.0
int my_safe_print_str(const char* val, int max_len)
{
  char *heap_end;

#ifdef __linux__
  // Try and make use of /proc filesystem to safely print memory contents.
  if (!safe_print_str(val, max_len))
    return 0;
#endif

  heap_end= (char*) sbrk(0);

  if (!PTR_SANE(val))
  {
    my_safe_printf_stderr("%s", "is an invalid pointer");
    return 1;
  }

  for (; max_len && PTR_SANE(val) && *val; --max_len)
    my_write_stderr((val++), 1);
  my_safe_printf_stderr("%s", "\n");

  return 0;
}