× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



David,

A *USRSPC can store a pointer, but a *DTAARA, *DTAQ, or database file cannot. The pointer will not be considered to be valid when you try to use it later.

Other objects, such as *USRQs, can also be used to exchange (valid) pointers.

One thing to keep in mind -- the *USRSPC can only be used to store pointers if the *USRSPC is created in the user domain and you access the *USRSPC directly by pointer. If, on the other hand, the system is configured with system value QALWUSRDMN basically shutting down user domain objects then only APIs (such as QUSRTVUS) can be used. And going through the APIs you will not get a valid pointer returned.

You are correct -- exchanging pointers across jobs can be dangerous and a definite security exposure. There are however system configuration settings that turn this capability off. The tradeoff is that APIs must be used rather than direct MI or pointer support, so performance may degrade a tad.

Bruce Vining


David Gibbs <david@xxxxxxxxxxxx> wrote:
Rory Hewitt wrote:
But you can't save a pointer in a data queue entry and then send it and
expect it to still work afterwards... :-(

Here's where I'm confused ... what difference does it make WHERE you
store a pointer if you can transfer it to another job and have the other
job be able to use it?

Put the pointer *IN* a user space: You're storing a value that happens
to be a pointer in the user space. The user space doesn't KNOW it's a
pointer. That has to be defined, in the program that stores & retrieves
the value, that the value is a pointer.
Put the pointer in a data area: Ditto
Put the pointer in a data queue: Ditto
Put the pointer in a database field: Ditto.

My problem with all this is, if you're sending a pointer to non-shared
memory (i.e., memory that was just allocated in a program, not created
through a user space or shared memory api) to another job, and the other
job can access the memory the pointer is referencing ... what's to stop
someone from just creating a pointer independent of the other job and
accessing arbitrary memory (that may, or may not, be in other jobs).

Maybe I'm not getting something ... but I sure would like to understand.

david


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.