-_-;;헉...이건 또 왠.....

puaxx의 이미지

int code_line2(char *xx,char *yy){
  printf("%s %s\n",xx,yy);
  .
  .
}
.
.
.
printf("%s %s\n",xx,yy);
code_line2(xx,yy);
.
.
.

에서 두 printf문의 결과가 다르네요.....이 황당함..

특히 code_line2안의 printf 문에서는 세그멘테이션 폴트 에러와 함께

xx=0x726573550a0d6d6f

와 같은 엄청난 숫자의 번지수가 들어가 있구요..

중간에 값이 변조 됐다는 건데...전혀 중간에 변수를 만지작 거리진 않거든요? 이럴수도 있는건가요?

익명 사용자의 이미지

잘못된 주소 값을 참조하고 있는거 아닌가요?

xx와 yy는 어떻게 선언하셨는지요?

kiwist의 이미지

namespace가 달라서 그런거 아닌가요? -_-a 긁적긁적~

cronex의 이미지

xx와 yy의 선언 혹은 메모리 할당은 어떻게 하셨죠?

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

pynoos의 이미지

주제가 글의 내용을 반영하지 않습니다. :evil:

cronex의 이미지

#include<stdio.h>

void  code_line2(char *xx,char *yy){
          printf("%s %s\n",xx,yy);
}

int main(int argc, char*argv[]) {
        char xx[20]="I'll be back.";
        char yy[20]="I'm back.";

        printf("%s %s\n",xx,yy);
        code_line2(xx,yy);

        return 0;
}

Quote:
$ gcc pr.c
$ ./a.out
I'll be back. I'm back.
I'll be back. I'm back.
$

제가 해본바로는 전혀 문제 없는데요.

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

puaxx의 이미지

음...물론 단순한 예제에서는 문제 없이 동작하는데요..

어째서 함수로 넘어가기만 하면 어처구니 없는 메모리 주소가 담겨 버리는지 알수가 없군요..

puaxx의 이미지

-_-;;오옷 문제를 찾았습니다...

함수안에서 printf 하기전에 메모리 침범이 있네요..ㅋ --;; 아 쪽팔려..

희안하게 KLDP게시판에다가 글올리면 디버깅이 금방 되요..--;

익명 사용자의 이미지

puaxx wrote:
-_-;;오옷 문제를 찾았습니다...

뭡니까~ 버럭~

혼자 알고 넘어가려는 겁니까~

공개해 주3~

====

다음부터는 제목과 내용을 꼭 매칭시켜 주세요 :wink:

그래야 다음에 같은 문제를 겪는 사람들이 쉽게 검색하지 않겠습니까?

cronex의 이미지

akudoku. wrote:
puaxx wrote:
-_-;;오옷 문제를 찾았습니다...

뭡니까~ 버럭~

혼자 알고 넘어가려는 겁니까~

공개해 주3~

====

다음부터는 제목과 내용을 꼭 매칭시켜 주세요 :wink:

그래야 다음에 같은 문제를 겪는 사람들이 쉽게 검색하지 않겠습니까?

#include<stdio.h>

void  code_line2(char *xx,char *yy){
          char zz[20] = "Good bye, John. I'll be back."  // 문자 갯수가 20개를 넘어갑니다. 
//결국 그 앞에 있는 yy,xx등의 변수가 오염될 가능성이 높죠. 

          printf("%s %s\n",xx,yy);
}

int main(int argc, char*argv[]) {
        char xx[20]="I'll be back.";
        char yy[20]="I'm back.";

        printf("%s %s\n",xx,yy);
        code_line2(xx,yy);

        return 0;
} 

꼭 이런 경우일지는 모르겠습니다만
한때 해킹 공부한다고 스택 오버플로우 어택이나
포맷 스트링 어택 공부했던 기억을 떠올려 봤습니다.
그 뒤로는 문자열 배열 크기 정할 때 매우 심사숙고하게 되는 버릇이 생겼죠. ^^;

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

익명 사용자의 이미지

cronex wrote:

그 뒤로는 문자열 배열 크기 정할 때 매우 심사숙고하게 되는 버릇이 생겼죠. ^^;

배열 리미트 값을 넘어간 곳에서 읽어 들여서 그런가요?

저도 예전에 비슷한 경우가-_-

lovian의 이미지

허허.

bof공격이군요. :o

-----------------
한글을 사랑합니다.

puaxx의 이미지

ㅎㅎ 맞습니다...버퍼 오버 플로우 때문 이었습니다...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.