Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: [Lug-bg] C va args


  • Subject: Re: [Lug-bg] C va args
  • From: Nedko Arnaudov <nedko@xxxxxxxxxxxxx>
  • Date: Tue, 03 Jul 2012 03:01:13 +0300
  • Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEX///8HBgUeFhGwUjwr NDF5RjOgVz2UVTxxTz9pNSXCiW2OUjhNIxi6bE6ROChWammgrK7+pa2IAAAAAXRSTlMAQObYZgAA AkxJREFUeAGtlAuTgyAMhK9gIGl4+P9/7W2wVbBo52YOZ2of+djdBPtT/7h+/lhf/wNYXFtLu38Y OCss7jEut4zMCTiXGzwiA7CMm78+XQPzemC9q15hun/7sovRAZcCg8QBfPRnF3QPd0jswHW9gUeK rwC2nwPTCRyudk9vhXtHXYgT4FxKOEn7zu83R+o3ULefUipKxjTn73LcPyzVbdck0YdAclJxE8C2 hKHiM5ZKGm1NLFn9IyUNBoQzMZsDjCKxD89sl6dBYwJYCFgi/8TKGfWWYzPmDkfdM40nEgRSWIYE NREkQcdMem9SBzAStJJiCaxcpOAy4HDUARWbJyyRAKKwzbBoKQmAzBSqw/7iOJaYC+mTSYtiJs3d FFjggTkGKr54r6gPwRoMZboASonB+wJA2/wQ32tysfAU4MWr97kBuLdx4FNy5QKoCfVYprCdEAhE tFY7gb5LlcnqMwIgBASaI3S4S1AHoO7ASwH+bCTdFE4AmxP4wcIJMQFPaN01YBI5F7QT9wagq5KO FuHd/sS1b8VCUMTeofUV07gH4Cno1iuo2BQY079RqKSK49MWYcyBSOgWEMWk2iCsUV4RQW6BNopN wYJYBB7GcAqN2UXLbc3Cssyk9wpiw7NimwPqkemLArVZGBKIhWP8qkCExyaHHBn+Y4iR+rP3mQH1 zKpMuDjmZ8DHfhDjpCsyYkUsxqsZy3EcxAgsDUCl/TnZYcJLgLVOogPWKkIB/rHzVm9QyGzE+mZ2 YF1XHAQcPPy51kOhecI06vpCfgFqlF1IG9UTLgAAAABJRU5ErkJggg==

Georgi Chorbadzhiyski <gf@xxxxxxxxxxx> writes:

> Е, понеже никой не пише тук освен спамери, я да се направя и аз на спамер.
>
> Моля някой който разбира повече от мен от C (би трябвало да са бая народ :)
> да ми светне лампата как да оправя следната атачната "програма". Функцията
> show2 не работи, резултатът от изпълнението на програмата е:
>
> show:1 test
> show:2 test
> show:3 test
> show:show2:-1079180764 show:%s
> show:show2:-1079180764 show:%s
> show:show2:-1079180764 show:%s
> show:show2:-1079180764 show:%s
> show:show3:1 test
> show:show3:1 test
> show:show3:2 test
> show:show3:3 test
> show:show2:-1079180764 show:%s
> show:show2:-1079180764 show:%s
> show:show2:-1079180764 show:%s
> show:show2:-1079180764 show:%s
> show:show3:1 test
> show:show3:1 -est
> show:show3:2 t-st
> show:show3:3 te-t
>
> когато show2 и show3 трябва да правят едно също. И друг път съм имал подобен
> проблем с va_start, когато го ползвам по подобен начин (от една моя функция
> викам друга и в двете искам да ползвам va_start/va_end).
>
> Приложената програма се компилира с gcc vl.c -o vl

В show2() пъхаш va_list в стека за разлика от show3() където се пъхат
самите аргументи. Прикачил съм кръпка дето променя имплементацията на
vsnprintf_sensitive() да работи с show2. Може би е по-добре да промениш
прототипа на vsnprintf_sensitive() вместо ... да приема va_list, по
подобие на библиотечната vsnprintf().
--- vl.c.orig	2012-07-03 02:50:38.882837484 +0300
+++ vl.c	2012-07-03 02:52:55.608826316 +0300
@@ -7,8 +7,10 @@
 static char *vsnprintf_sensitive(char *result, int result_size, int remove_sensitive, char *fmt, ...) {
 	// Get the resulting string
 	va_list params;
+	va_list params2;
 	va_start(params, fmt);
-	vsnprintf(result, result_size, fmt, params);
+	params2 = va_arg(params, va_list);
+	vsnprintf(result, result_size, fmt, params2);
 	va_end(params);
 	// Filter sensitive information
 	int i, n = strlen(result), p = 0;
@@ -56,6 +58,8 @@
 		show("show3:%s", vsnprintf_sensitive(txt, sizeof(txt), hide, fmt, __VA_ARGS__)); \
 	} while(0)
 
+#undef show3
+#define show3(fmt, ...)
 
 int main(void)
 {
-- 
Nedko Arnaudov <GnuPG KeyID: 5D1B58ED>

Attachment: pgpTI0dEnzzbk.pgp
Description: PGP signature

_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg

  • Относно:

 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.