<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Pointer Validation]]></title><description><![CDATA[<p>Hi</p>
<p>Wie kann ich den Wert eines void* Pointers auslesen, bei welchem ich nicht über die Länge bescheid weiss?</p>
<p>Bisher habe ich das mit folgendem Code versucht zu bewältigen, jedoch treten immer wieder Access Violation trotz des Exceptionhandlings auf.</p>
<pre><code class="language-cpp">// Void*
			char* Temp = (char*)va_arg(Pointer,LPVOID);

			int i = 0;

			// Ceck accessability
			try {
				if(Temp != 0 &amp;&amp; !IsBadReadPtr(Temp,sizeof(char)))
				{
					do
					{
						// Save value
						Buffer &lt;&lt; Temp[i];
						i++;
					} while (!IsBadReadPtr(Temp+i,sizeof(char)) &amp;&amp; i &lt; MAXLENGTH);
				} else
					// Save only address
					Buffer &lt;&lt; &amp;Temp;
			} catch(...){};
</code></pre>
<p>MfG Joe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177561/pointer-validation</link><generator>RSS for Node</generator><lastBuildDate>Sat, 27 Jun 2026 22:41:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177561.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Apr 2007 17:41:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer Validation on Sun, 01 Apr 2007 17:43:02 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Wie kann ich den Wert eines void* Pointers auslesen, bei welchem ich nicht über die Länge bescheid weiss?</p>
<p>Bisher habe ich das mit folgendem Code versucht zu bewältigen, jedoch treten immer wieder Access Violation trotz des Exceptionhandlings auf.</p>
<pre><code class="language-cpp">// Void*
			char* Temp = (char*)va_arg(Pointer,LPVOID);

			int i = 0;

			// Ceck accessability
			try {
				if(Temp != 0 &amp;&amp; !IsBadReadPtr(Temp,sizeof(char)))
				{
					do
					{
						// Save value
						Buffer &lt;&lt; Temp[i];
						i++;
					} while (!IsBadReadPtr(Temp+i,sizeof(char)) &amp;&amp; i &lt; MAXLENGTH);
				} else
					// Save only address
					Buffer &lt;&lt; &amp;Temp;
			} catch(...){};
</code></pre>
<p>MfG Joe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1257477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1257477</guid><dc:creator><![CDATA[*JoE*]]></dc:creator><pubDate>Sun, 01 Apr 2007 17:43:02 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Validation on Sun, 01 Apr 2007 18:02:17 GMT]]></title><description><![CDATA[<p>Fragen wir mal so: Warum willst Du das überhaupt machen?<br />
Wenn Du nicht weisst was Du machst, solltest Du es auch nicht machen... just my 2 cents...<br />
PS: C++-Exception handling ist eigentlich nicht für Access-Violations gedacht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1257519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1257519</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sun, 01 Apr 2007 18:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Validation on Sun, 01 Apr 2007 18:38:28 GMT]]></title><description><![CDATA[<p>Ich schreibe eine Sandboxapplication, welche Winapifunktion unterbricht. Um nicht für jede Funktion einen eigenen Loghandler zu schreiben, was eine Unmenge an Arbeit bedeuten würde, habe ich dynamische Funktionen implementeriert. Jedoch mit dem Preis, dass ich die Länge von Pointern nicht mehr zu den jeweiligen Pointern zuweisen kann.</p>
<p>Ich weiss, dass IsBadReadPtr nicht zuverlässig funktioniert. Deshalb habe ich das Exceptionhandling verwendet.</p>
<p>MfG Joe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1257567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1257567</guid><dc:creator><![CDATA[*JoE*]]></dc:creator><pubDate>Sun, 01 Apr 2007 18:38:28 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Validation on Sun, 01 Apr 2007 19:09:53 GMT]]></title><description><![CDATA[<p>Falls du mit dem MSVC kompilierst könnte dass das sein wonach du suchst:<br />
<a href="http://msdn2.microsoft.com/en-us/library/5z4bw5h5" rel="nofollow">_set_se_translator</a></p>
<p>Damit kannst du dann die Hardwareexceptions abfangen und sofern möglich auch drauf reagieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1257579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1257579</guid><dc:creator><![CDATA[ToxiCore]]></dc:creator><pubDate>Sun, 01 Apr 2007 19:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Validation on Sun, 01 Apr 2007 19:34:38 GMT]]></title><description><![CDATA[<p>Was willst du genau machen?</p>
<p>IsBadReadPtr ist eine Funktion die meiner Meinung nach nur etwas in einem Debugger zu suchen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1257600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1257600</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Sun, 01 Apr 2007 19:34:38 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Validation on Sun, 01 Apr 2007 21:57:29 GMT]]></title><description><![CDATA[<p>Ben04</p>
<p>Ich möchte den Wert eines Pointers ausgeben, bei welchem ich die Länge dieses Wertes nicht kenne.</p>
<p>Da die Sandbox eine Art Debugger darstellt ist IsBadReadPtr nicht fehl am Platz. Aber wie ich schon von diversen Seiten gehört habe funktioniert IsBadReadPtr nicht richtig. Ich suche also nach einer Alternative.</p>
<p><a href="http://blogs.msdn.com/oldnewthing/archive/2006/09/27/773741.aspx" rel="nofollow">http://blogs.msdn.com/oldnewthing/archive/2006/09/27/773741.aspx</a></p>
<p>MfG Joe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1257653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1257653</guid><dc:creator><![CDATA[*JoE*]]></dc:creator><pubDate>Sun, 01 Apr 2007 21:57:29 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Validation on Tue, 03 Apr 2007 15:57:28 GMT]]></title><description><![CDATA[<p>[JoE] schrieb:</p>
<blockquote>
<p>Ich möchte den Wert eines Pointers ausgeben, bei welchem ich die Länge dieses Wertes nicht kenne.</p>
</blockquote>
<p>Ähm ... der Wert eines Pointers ist eigentlich die referenzierte Adresse (wobei ich glaube Du meinst etwas anderes <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ), das geht einfach so:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main()
{
   using namespace std;

   int iData = 12;
   void* pvRef = &amp;iData;

   cout &lt;&lt; &quot;Adresse von iData ist: &quot; &lt;&lt; hex &lt;&lt; &quot;0x&quot; &lt;&lt; pvRef &lt;&lt; endl;

   return (0);
}
</code></pre>
<p>[JoE] schrieb:</p>
<blockquote>
<p>Da die Sandbox eine Art Debugger darstellt ist IsBadReadPtr nicht fehl am Platz. Aber wie ich schon von diversen Seiten gehört habe funktioniert IsBadReadPtr nicht richtig. Ich suche also nach einer Alternative.</p>
</blockquote>
<p>Ähm man könnte auch sagen, dass das Verwenden von <em>IsBadReadPtr</em> mehr Fehler erzeugt, als eigentlich verhindern sollte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258705</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 03 Apr 2007 15:57:28 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Validation on Tue, 03 Apr 2007 18:23:48 GMT]]></title><description><![CDATA[<p>[JoE] schrieb:</p>
<blockquote>
<p>Ich schreibe eine Sandboxapplication, welche Winapifunktion unterbricht. Um nicht für jede Funktion einen eigenen Loghandler zu schreiben, was eine Unmenge an Arbeit bedeuten würde, habe ich dynamische Funktionen implementeriert. Jedoch mit dem Preis, dass ich die Länge von Pointern nicht mehr zu den jeweiligen Pointern zuweisen kann.</p>
<p>Ich weiss, dass IsBadReadPtr nicht zuverlässig funktioniert. Deshalb habe ich das Exceptionhandling verwendet.</p>
<p>MfG Joe</p>
</blockquote>
<p>Dann probiers mit __try + __catch statt try + catch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Damit kannst du (wenn du mit support für asynchrone exceptions compilierst) Dinge wie access violations schön fangen.<br />
Beispiele sollten in der MSDN zu hauf zu finden sein. Ahja, du kannst __try nicht mit try innerhalb der selben Funktion mischen, allerdings ohne Probleme innerhalb des selben Programms/Callstacks -- notfalls also einfach eine Funktion in 2 teilen wenn du beides brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258775</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 03 Apr 2007 18:23:48 GMT</pubDate></item></channel></rss>